Part Number Hot Search : 
207QTDT0 BAV21W B104K DTCSP AC05F S3F441FX F06T4 IS61LV
Product Description
Full Text Search
 

To Download AM79C965A Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  p ublication# 18219 rev: d amendment/ 0 issue date: august 2000 AM79C965A pcnet?-32 single-chip 32-bit ethernet controller distinctive characteristics single-chip ethernet controller for 486 and video electronics standards association (vesa) local buses supports iso 8802-3 (ieee/ansi 802.3) and ethernet standards direct interface to the 486 local bus or vesa vl-bus enhanced burst mode with support for am486 ? burst read/write operations software-compatible with amd ? s am7990 lance, am79c90 c-lance, am79c960 pcnet-isa, am79c961 pcnet-isa+, am79c961a pcnet-isa ii, am79c970a pcnet-pci ii, and am79c900 ilacc ? register and descriptor architecture compatible with am2100/am1500t and novell ne2100/ne1500 driver software high-performance bus master architecture with integrated dma buffer management unit for low cpu and bus utilization built-in byte-swap logic supports both big and little endian byte alignment microwire eeprom interface supports jumperless design single +5 v power supply operation low-power, cmos design with sleep modes allows reduced power consumption for critical battery-powered applications and green pcs look-ahead packet processing (lapp) allows protocol analysis to begin before end of receive frame integrated manchester encoder/decoder individual 136-byte transmit and 128-byte receive fifos provide frame buffering for increased system latency tolerance and support the following features: ?automatic retransmission with no fifo reload ?automatic receive stripping and transmit padding (individually programmable) ?automatic runt packet rejection ?automatic deletion of received collision frames jtag boundary scan (ieee 1149.1) test access port interface for board-level production test provides integrated attachment unit interface (aui) and 10base-t transceiver with automatic port selection automatic twisted-pair receive polarity detection and automatic correction of the receive polarity optional byte padding to long-word boundary on receive dynamic transmit fcs generation programmable on a frame-by-frame basis internal/external loopback capabilities supports the following types of network interfaces: ?aui to external 10base-2, 10base-5, 10base-t or 10base-f mau ?internal 10base-t transceiver with smart squelch to twisted-pair medium supports lance/c-lance/pcnet-isa general purpose serial interface (gpsi) 160-pin pqfp package general description the pcnet-32 single-chip 32-bit ethernet controller is a highly integrated ethernet system solution designed to address high-performance system application require- ments. it is a flexible bus-mastering device that can be used in any networking application, including network- ready pcs, printers, fax modems, and bridge/router designs. the bus-master architecture provides high data throughput in the system and low cpu and bus utilization. the pcnet-32 controller is fabricated with amd?s advanced low-power cmos process to provide low operating and standby current for power-sensitive applications.
2 AM79C965A the pcnet-32 controller is a complete ethernet node integrated into a single vlsi device. it contains a bus interface unit, a dma buffer management unit, an iso 8802-3 (ieee/ansi 802.3)-defined media access con- trol (mac) function, individual 136-byte transmit and 128-byte receive fifos, an iso 8802-3 (ieee/ansi 802.3)-defined attachment unit interface (aui) and twisted-pair transceiver medium attachment unit (10base-t mau), and a microwire eeprom interface. the pcnet-32 controller is also register-compatible with the lance (am7990) ethernet controller, the c- lance (am79c90) ethernet controller, the ilacc (am79c900) ethernet controller, and all ethernet controllers in the pcnet family, including the pcnet-isa controller (am79c960), the pcnet-isa+ controller (am79c961), pcnet-isa ii (am79c961a), and the pcnet-pci ii controller (am79c970a). the buffer man- agement unit supports the lance, ilacc (am79c900), and pcnet descriptor software models. the pcnet-32 controller is software-compatible with novell ne2100 and ne1500 ethernet adapter card ar- chitectures. in addition, a sleep function has been in- corporated to provide low standby current, which is essential for notebooks and green pcs. the 32-bit demultiplexed bus interface unit provides a direct interface to the vesa vl-bus and 486 series microprocessors, simplifying the design of an ethernet node in a pc system. with its built-in support for both little and big endian byte alignment, this controller also addresses proprietary non-pc applications. key pcnet-32 configuration parameters, including the unique ieee physical address, can be read from an ex- ternal non-volatile memory (serial eeprom) immedi- ately following system reset. in addition, the i/o location at which the internal registers are accessed may be stored in the eeprom, allowing the software model of the device to be located appropriately in system i/o space during system initialization. the controller has the capability to select automatically either the aui port or the twisted-pair transceiver. only one interface is active at any one time. the individual transmit and receive fifos reduce system overhead, providing sufficient latency during frame transmission and reception, and minimizing intervention during normal network error recovery. the integrated manchester encoder/decoder (mendec) eliminates the need for an external serial interface adapter (sia) in the node system. the built-in general purpose serial interface (gpsi) allows the mendec to be bypassed. in addition, the device provides programmable on-chip led drivers for transmit, receive, collision, receive polarity, link integrity, or jabber status. the pcnet-32 controller also provides an external address detection interface (eadi) to allow external hardware address filterin g in inter-networking applications.
AM79C965A 3 ordering information standard products: amd standard products are available in several packages and operating ranges. the order number (valid combination) is formed by a combination of the elements below. valid combinations AM79C965A k c device number/description AM79C965A pcnet-32 single-chip 32-bit ethernet controller alternative package option \w = trimmed and formed in a tray (pqj160) optional processing blank = standard processing operating conditions c = commercial (0 c to +70 c) package type (per prod. nomenclature/16-038) k = plastic quad flat pack (pqr160) \w speed not applicable valid combinations AM79C965A kc, kc\w valid combinations list configurations planned to be sup- ported in volume for this device. consult the local amd sales office to confirm availability of specific valid combi- nations and to check on newly released combinations.
4 AM79C965A table of contents distinctive characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 general description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 ordering information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 block diagram: vesa vl-bus mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 connection diagram: vesa vl-bus mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 pin designations: vesa vl-bus mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 listed by pin number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 listed by pin name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 listed by group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 driver type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 pin description: vesa vl-bus mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 configuration pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 configuration pin settings summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 pin connections to v dd or v ss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 vesa vl-bus interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 board interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 microwire eeprom interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 attachment unit interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 twisted pair interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 external address detection interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 general purpose serial interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 ieee 1149.1 test access port interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 power supply pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 vesa vl-bus / local bus pin cross-reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 block diagram: 486 local bus mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 connection diagram: 486 local bus mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 pin designations: 486 local bus mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 listed by pin number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 listed by pin name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 listed by group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 driver type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 pin description: 486 local bus mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 configuration pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 configuration pin settings summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 pin connections to v dd or v ss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 local bus interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 board interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 microwire eeprom interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 attachment unit interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 twisted pair interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 external address detection interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 general purpose serial interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 ieee 1149.1 test access port interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 power supply pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 basic functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 system bus interface fuction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 software interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 network interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 detailed functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 bus interface unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 bus acquisition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 bus master dma transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 initialization block dma transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 descriptor dma transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 fifo dma transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 linear burst dma transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
AM79C965A 5 slave timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 vesa vl-bus mode timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 bus master and bus slave data byte placement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 buffer management unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 re-initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 buffer management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 descriptor rings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 descriptor ring access mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 transmit descriptor table entry (tdte) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 receive descriptor table entry (rdte) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 media access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 transmit and receive message data encapsulation . . . . . . . . . . . . . . . . . . . . . . . . 91 media access management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 manchester encoder/decoder (mendec) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 external crystal characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 external clock drive characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 mendec transmit path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 transmitter timing and operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 receiver path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 input signal conditioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5 clock acquisition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 pll tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 carrier tracking and end of message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 data decoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 jitter tolerance definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 attachment unit interface(aui) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 differential input terminations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 collision detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 twisted-pair transceiver (t-mau) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 twisted pair transmit function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 twisted pair receive function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 link test function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 polarity detection and reversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 twisted pair interface status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 collision detect function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 signal quality error (sqe) test (heartbeat) function . . . . . . . . . . . . . . . . . . . . . . 99 jabber function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 power down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 10base-t interface connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 ieee 1149.1 test access port interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 boundary scan circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 00 tap fsm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 supported instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 instruction register and decoding logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 boundary scan register (bsr) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 other data register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 eadi (external address detection interface) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 general purpose serial interface (gpsi) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 power savings modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 software access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 i/o resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 i/o register access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 hardware access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 pcnet-32 controller master accesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 slave access to i/o resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 eeprom microwire access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
6 AM79C965A transmit operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 transmit function programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 automatic pad generation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 transmit fcs generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 transmit exception conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 receive operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 receive function programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 automatic pad stripping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 9 receive fcs checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 receive exception conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 loopback operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 led support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 h_reset, s_reset and stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 h_reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 s_reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 user accessible registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 setup registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 running registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 rap register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 control and status registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 bus configuration registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 initialization block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 rlen and tlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 rdra and tdra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 ladrf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 padr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 receive descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 rmd0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 rmd1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 rmd2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 rmd3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 transmit descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 tmd0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 tmd1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 tmd2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 tmd3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 register summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 csrs ? control and status registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 bcr ? bus configuration registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 absolute maximum ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 operating ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 dc characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 switching characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 bus interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 10base-t interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 aui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 gpsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 eadi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 key to switching waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 switching test circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 estimated output valid delay vs. load capacitance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 switching waveforms: system bus interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 system bus interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 10base-t interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 aui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 gpsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
AM79C965A 7 eadi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 physical dimensions* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 pqr-160 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 plastic quad flat pack trimmed and formed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 appendix a: logical address filtering for ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a-1 appendix b: recommendation for power and ground decoupling . . . . . . . . . . . . . . . . . b-1 appendix c: alternative method for initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c-1 appendix d: introduction of the look-ahead packet processing (lapp) concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . d-1 appendix e: AM79C965A pcnet-32 silicon errata report . . . . . . . . . . . . . . . . . . . . . . . . . . . . e-1
8 AM79C965A block diagram: vesa vl-bus mode buffer management unit fifo control microwire, led, and jtag contro l vesa vl-bus interface unit vlben lb/vesa ads brdy be0- be3 lclk wback blast rdyrtn m/io d/c w/r intr1-intr4 lreq lreqi lgnt lgnto sleep ldev leads lbs16 lrdy adr2-adr31 dat0-dat31 reset eedi 802.3 mac core manchester encoder/ decoder (pls) and aui port 10base-t mau lnkst xtal1 do+/-d ci+/-d di+/-d xtal2 eecs eesk shfbusy tck tdi tms tdo eedo led1-led3 rcv fifo xmt fifo rxd+/-d txd+/-d txp+/-d 18219-1
AM79C965A 9 connection diagram: vesa vl-bus mode nc 160 159 shfbusy eecs 158 157 eesk/led1/sfbd eedi/lnkst 156 155 eedo/ledpre3/srd 154 153 intr1 adr18 152 151 adr19 adr20 150 149 dvssn14 adr21 148 147 adr22 adr23 146 145 adr24 dvddo5 144 143 adr25 adr26 142 141 dvssn13 adr27 140 139 adr28 adr29 138 137 adr30 adr31 136 135 dvss4 lb/vesa 134 133 sleep dvdd3 avdd2 131 130 ci+ ci e 129 128 di+ di e 127 126 avdd1 do+ 125 124 do e avss1 123 122 nc nc 121 132 nc 120 119 nc xtal2 118 117 avss2 xtal1 116 115 avdd3 txd+ 114 113 txp+ txd-d 112 111 txp-d avdd4 110 109 rxd+ rxd-d 108 107 dvss3 jtagsel 106 105 intr2/ear intr3/tdi 104 103 lgnto/tck intr4/tms 102 101 lreqi/tdo dat0 100 99 dat1 dvssn11 98 97 dat2 dat3 96 95 dat4 dat5 94 93 dvddo4 dat6 dvssn10 91 90 dat7 dat8 89 88 dat9 dvdd2 87 86 dat10 dat11 85 84 dvssn9 dat12 83 82 nc 81 92 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 78 79 80 69 nc rdyrtn lrdy w/r ads m/io be3 d/c reset be2 dvssn5 be1 be0 wback dat31 dat30 dat29 dat28 dvssn6 dat27 dat26 dat25 dat24 dat23 dvddo3 dat22 dvssn7 dat21 dat20 dat19 dvss2 dat18 dat17 dvssn8 dat16 dat15 dat14 dat13 nc nc nc 1 2 led2/srdclk dvssn1 3 4 adr17 adr16 5 6 adr15 adr14 7 8 dvddo1 adr13 9 10 adr12 dvssn2 11 12 adr11 adr10 13 14 adr9 adr8 15 16 adr7 dvssn3 17 18 adr6 adr5 19 20 dvsspad adr4 21 22 adr3 dvssn4 23 24 adr2 lbs16 25 26 leads dvssclk 27 28 lclk dvddclk vlben 30 31 blast lgnt 32 33 brdy dvddo2 34 35 lreq dvss1 36 37 ldev dvdd1 38 39 nc nc 40 29 dvssn12 dvssn15 18219-3
10 AM79C965A pin designations: vesa vl-bus mode listed by pin number pin no. name pin no. name pin no. name pin no. name 1nc 41 nc 81 nc 121nc 2 led2/srdclk 42 rdyrtn 82 dat12 122 nc 3 dvssn1 43 lrdy 83 dvssn9 123 avss1 4 adr17 44 w/r 84 dat11 124 do ? 5 adr16 45 ads 85 dat10 125 do+ 6 adr15 46 m/io 86 dat9 126 avdd1 7 adr14 47 be3 87 dat8 127 di ? 8 dvddo1 48 d/c 88 dat7 128 di+ 9 adr13 49 reset 89 dvssn10 129 ci ? 10 adr12 50 be2 90 dat6 130 ci+ 11 dvssn2 51 dvssn5 91 dvddo4 131 avdd2 12 adr11 52 be1 92 dat5 132 adr31 13 adr10 53 be0 93 dat4 133 adr30 14 adr9 54 wback 94 dat3 134 adr29 15 adr8 55 dat31 95 dvdd2 135 dvdd3 16 adr7 56 dat30 96 dat2 136 dvss4 17 dvssn3 57 dat29 97 dvssn11 137 adr28 18 adr6 58 dat28 98 dat1 138 adr27 19 adr5 59 dvssn6 99 dat0 139 dvssn13 20 dvsspad 60 dat27 100 lreqi /tdo 140 adr26 21 adr4 61 dat26 101 lgnto /tck 141 adr25 22 adr3 62 dat25 102 intr4/tms 142 dvddo5 23 dvssn4 63 dat24 103 dvssn12 143 adr24 24 adr2 64 dat23 104 intr3/tdi 144 adr23 25 lbs16 65 dvddo3 105 intr2/ear 145 adr22 26 dvdd1 66 dat22 106 jtagsel 146 adr21 27 leads 67 dvssn7 107 dvss3 147 dvssn14 28 dvssclk 68 dat21 108 rxd ? 148 adr20 29 lclk 69 dvss2 109 rxd+ 149 adr19 30 dvddclk 70 dat20 110 avdd4 150 adr18 31 vlben 71 dat19 111 txp ? 151 intr1 32 blast 72 dat18 112 txd ? 152 eedo/ledpre3/srd 33 lgnt 73 dat17 113 txp+ 153 lb/vesa 34 brdy 74 dvssn8 114 txd+ 154 eedi/lnkst 35 dvddo2 75 dat16 115 avdd3 155 eesk/led1/sfbd 36 lreq 76 dat15 116 xtal1 156 sleep 37 dvss1 77 dat14 117 avss2 157 eecs 38 ldev 78 dat13 118 xtal2 158 dvssn15 39 nc 79 nc 119 nc 159 shfbusy 40 nc 80 nc 120 nc 160 nc
AM79C965A 11 pin designations: vesa vl-bus mode listed by pin name name pin no. name pin no. name pin no. name pin no. adr2 24 be3 47 do+ 125 jtagsel 106 adr3 22 blast 32 do ? 124 lb/vesa 153 adr4 21 brdy 34 dvdd1 26 lbs16 25 adr5 19 ci+ 130 dvdd2 95 lclk 29 adr6 18 ci ? 129 dvdd3 135 ldev 38 adr7 16 d/c 48 dvddclk 30 leads 27 adr8 15 dat0 99 dvddo1 8 led2/srdclk 2 adr9 14 dat1 98 dvddo2 35 lgnt 33 adr10 13 dat2 96 dvddo3 65 lgnto /tck 101 adr11 12 dat3 94 dvddo4 91 lrdy 43 adr12 10 dat4 93 dvddo5 142 lreq 36 adr13 9 dat5 92 dvss1 37 lreqi /tdo 100 adr14 7 dat6 90 dvss2 69 m/io 46 adr15 6 dat7 88 dvss3 107 nc 1 adr16 5 dat8 87 dvss4 136 nc 39 adr17 4 dat9 86 dvssclk 28 nc 40 adr18 150 dat10 85 dvssn1 3 nc 41 adr19 149 dat11 84 dvssn2 11 nc 79 adr20 148 dat12 82 dvssn3 17 nc 80 adr21 146 dat13 78 dvssn4 23 nc 81 adr22 145 dat14 77 dvssn5 51 nc 119 adr23 144 dat15 76 dvssn6 59 nc 120 adr24 143 dat16 75 dvssn7 67 nc 121 adr25 141 dat17 73 dvssn8 74 nc 122 adr26 140 dat18 72 dvssn9 83 nc 160 adr27 138 dat19 71 dvssn10 89 rdyrtn 42 adr28 137 dat20 70 dvssn11 97 reset 49 adr29 134 dat21 68 dvssn12 103 rxd+ 109 adr30 133 dat22 66 dvssn13 139 rxd ? 108 adr31 132 dat23 64 dvssn14 147 shfbusy 159 ads 45 dat24 63 dvssn15 158 sleep 156 avdd1 126 dat25 62 dvsspad 20 txd+ 114 avdd2 131 dat26 61 eecs 157 txd ? 112 avdd3 115 dat27 60 eedi/lnkst 154 txp+ 113 avdd4 110 dat28 58 eedo/ledpre3/srd 152 txp ? 111 avss1 123 dat29 57 eesk/led1/sfbd 155 vlben 31 avss2 117 dat30 56 intr1 151 w/r 44 be0 53 dat31 55 intr2/ear 105 wback 54 be1 52 di+ 128 intr3/tdi 104 xtal1 116 be2 50 di ? 127 intr4/tms 102 xtal2 118
12 AM79C965A pin designations: vesa vl-bus mode listed by group pin name pin function type driver no. of pins vesa vl-bus interface adr2 ? adr31 address bus io ts 30 ads address status i/o ts 1 be0 ? be3 byte enable i/o ts 4 blast burst last o ts 1 brdy burst ready i/o ts 1 d/c data/control select i/o ts 1 dat0 ? dat31 data bus i/o ts 32 intr1 interrupt number 1 o ts 1 intr2 interrupt number 2 i/o ts 1 intr3 interrupt number 3 i/o ts 1 intr4 interrupt number 4 i/o ts 1 jtagsel jtag select i 1 lb/vesa local bus/vesa vl-bus select pin i 1 lbs16 local bus size 16 i 1 lclk local clock i 1 ldev local device o o4 1 leads local external address strobe o ts 1 lgnt local bus grant i 1 lgnto local grant out i/o ts 1 lrdy local ready o ts 1 lreq local bus request o o8 1 lreqi local bus request in i/o ts 1 m/io memory/i/o select i/o ts 1 rdyrtn ready return i 1 reset reset i 1 vlben burst enable i 1 w/r write/read select i/o ts 1 wback write back i 1 board interface eecs microwire serial eeprom chip select o o8 1 eedi/lnkst microwire serial eeprom data in/link status o led 1 eedo/ledpre3 microwire address eeprom data out/led3 predriver i/o led 1 eesk/led1 microwire serial eeprom clock/led1 o led 1 led2 led output number 2 o led 1 shfbusy shift busy (for external eeprom-programmable logic) o o8 1 sleep sleep mode i 1 xtal1 crystal input i 1 xtal2 crystal output o 1
AM79C965A 13 pin designations: vesa vl-bus mode (continued) listed by group pin name pin function type driver no. of pins attachment unit interface (aui) ci+/ci ? aui collision differential pair i 2 di+/di ? aui data in differential pair i 2 do+/do ? aui data out differential pair o do 2 twisted-pair transceiver interface (10base-t) rxd+/rxd ? receive differential pair i 2 txd+/txd ? transmit differential pair o tdo 2 txp+/txp ? transmit predistortion differential pair o tpo 2 lnkst/eedi link status/microwire serial eeprom data in o led 1 ieee 1149.1 test access port interface (jtag) tck test clock i/o ts 1 tdi test data in i/o ts 1 tdo test data out i/o ts 1 tms test mode select i/o ts 1 external address detection interface (eadi) ear external address reject low i/o ts 1 srd serial receive data i/o ts 1 srdclk serial receive data clock i/o ts 1 sfbd start frame ? byte delimiter o led 1 power supplies avdd analog power p 4 avss analog ground p 2 dvdd digital power p 3 dvddclk digital power clock p 1 dvddo i/o buffer digital power p 5 dvss digital ground p 4 dvssclk digital ground clock p 1 dvssn i/o buffer digital ground p 15 dvsspad digital ground pad p 1
14 AM79C965A pin designations: vesa vl-bus mode driver type table 1. output drive type table 2. pins with pullup name type i ol (ma) i oh (ma) pf ts tri-state 8 -0.4 50 o8 totem pole 8 -0.4 50 o4 totem pole 4 -0.4 50 od open drain 8 50 led led 12 -0.4 50 signal pullups tdi 10 k ? tms 10 k ? tck 10 k ?
AM79C965A 15 pin description: vesa vl-bus mode configuration pins jtagsel jtag function select input the value of this pin will asynchronously select between jtag mode and multi-interrupt mode. the value of this pin will asynchronously affect the function of the jtag ? intr ? daisy chain arbitration pins, regardless of the state of the reset pin and regardless of the state of the lclk pin. if the value is a ? 1 ? , then the pcnet-32 controller will be programmed for jtag mode. if the value is a ? 0 ? , then the pcnet-32 controller will be programmed for multi-interrupt mode. when programmed for jtag mode, four pins of the pcnet-32 controller will be configured as a jtag (ieee 1149.1) test access port. when programmed for multi- interrupt mode, two of the jtag pins will become interrupts and two jtag pins will be used for daisy chain arbitration support. table 3 below outlines the pin changes that will occur by programming the jtagsel pin. table 3. jtag pin changes the jtagsel pin may be tied directly to v dd or v ss . a series resistor may be used but is not necessary. lb/vesa local bus/vesa vl-bus select input the value of this pin will asynchronously determine the operating mode of the pcnet-32 controller, regardless of the state of the reset pin and regardless of the state of the lclk pin. if the lb/vesa pin is a tied to v dd , then the pcnet-32 controller will be programmed for local bus mode. if the lb/vesa pin is tied to v ss , then the pcnet-32 controller will be programmed for vesa-vl bus mode. note that the setting of lb/vesa determines the functionality of the following pins (names in parentheses are pins in 486 local bus mode): vlben (am486 ), reset (reset), lbs16 (ahold), lreq (hold), lgnt (hlda), lreqi (holdi) and lgnto (hldao). vlben burst enable input this pin is used to determine whether or not bursting is supported by the pcnet-32 device in vesa vl-bus mode. the vlben pin is sampled at every rising edge of lclk while the reset pin is asserted. in vesa-vl mode (the lb/vesa pin is tied to v ss ), if the sampled value of vlben is low, then the breade and bwrite bits in bcr18 will be forced low, and the pcnet-32 controller will never attempt to perform linear burst reads or writes. if the sampled value of vlben is high, linear burst accesses are permitted, consistent with the values programmed into breade and bwrite. because of byte-duplication conventions within a 32-bit am386 system, the pcnet-32 controller will always pro- duce the correct bytes in the correct byte lanes in accordance with the am386dx data sheet. this byte duplication will automatically occur, regardless of the operating mode selected by the lb/vesa pin. the vlben pin may be tied directly to v dd or v ss . a series resistor may be used but is not necessary. the vlben pin need only be valid when the reset pin is active (regardless of the connection of the lb/ vesa pin) and may be tied to id(3) in a vesa vl-bus version 1.0 system, or to the logical and of id(4), id(3), id(1), and id(0) in a vesa-vl-bus version 1.1 or 2.0 system. note: this pin needs to be tied low when the lb/vesa pin has been tied to v dd . see the pin description for the am486 pin in the local bus mode section. configuration pin settings summary table 4 shows the possible pin configurations that may be invoked with the pcnet-32 controller configuration pins. pin jtagsel=1 jtag mode jtagsel=0 multi-interrupt mode lgnt0 /tck tck lgnto lgnt1 /tdo tdo lreqi lgnt2 /tdi tdi intr3 lgnt3 /tms tms intr4
16 AM79C965A table 4. configuration pin settings *x = don?t care pin connections to v dd or v ss several pins may be connected to v dd or v ss for various application options. some pins are required to be connected to v dd or v ss in order to set the controller into a particular mode of operation, while other pins might be connected to v dd or v ss if that pin ? s function is not implemented in a specific application. table 5 shows which pins require a connection to v dd or v ss , and which pins may optionally be connected to v dd or v ss because the application does not support that pin ? s function. the table also shows whether or not the connections need to be resistive. vesa vl-bus interface adr2 ? adr31 address bus input/output address information which is stable during a bus operation, regardless of the source. when the pcnet-32 controller is current master, a2 ? a31 will be driven. when the pcnet-32 controller is not current master, the a2 ? a31 lines are continuously monitored to determine if an address match exists for i/o slave transfers. ads address status input/output when driven low, this signal indicates that a valid bus cycle definition and address are available on the m/io , d/c , w/r and a2 ? a31 pins of the local bus interface. at that time, the pcnet-32 controller will examine the combination of m/io , d/c , w/r , and the a2 ? a31 pins to determine if the current access is directed toward the pcnet-32 controller. ads will be driven low when the pcnet-32 controller performs a bus master access on the local bus. be0 ? be3 byte enable input/output these signals indicate which bytes on the data bus are active during read and write cycles. when be3 is active, the byte on dat31 ? dat24 is valid. be2 ? be0 active indicate valid data on pins dat23 ? dat16, dat15 ? dat8, dat7 ? dat0, respectively. the byte enable signals are outputs for bus master and inputs for bus slave operations. blast burst last output when the blast signal is asserted, then the next time that brdy or rdyrtn is asserted, the burst cycle is complete. brdy burst ready input/output brdy functions as an input to the pcnet-32 controller during bus master cycles. when brdy is asserted during a master cycle, it indicates to the pcnet-32 controller that the target device is accepting burst transfers. it also serves the same function as rdyrtn does for non-burst accesses. that is, it indicates that the target device has accepted the data on a master write cycle, or that the target device has presented valid data onto the bus during master read cycles. lb/vesa vlben jtagsel mode selected 0 x* 0 vl bus mode with 4 interrupts and daisy chain arbitration 0 x* 1 vl bus mode with 2 interrupts and jtag 1 0 0 vl bus mode with 4 interrupts and daisy chain arbitration 1 0 1 vl bus mode with 2 interrupts and jtag 1 1 x reserved
AM79C965A 17 table 5. pin connections to power/ground if brdy and rdyrtn are sampled active in the same cycle, then rdyrtn takes precedence, causing the next transfer cycle to begin with a t1 cycle. brdy functions as an output during pcnet-32 controller slave cycles and is always driven inactive (high). brdy is floated if the pcnet-32 controller is not being accessed as the current slave device on the local bus. d/c data/control select input/output during slave accesses to the pcnet-32 controller, the d/c pin, along with m/io and w/r , indicates the type of cycle that is being performed. pcnet-32 controller will only respond to local bus accesses in which d/c is driven high by the local bus master. during pcnet-32 controller bus master accesses, the d/c pin is an output and will always be driven high. d/c is floated if the pcnet-32 controller is not the current master on the local bus. dat0 ? dat31 data bus input/output used to transfer data to and from the pcnet-32 control- ler to system resources via the local bus. dat31 ? dat0 are driven by the pcnet-32 controller when performing bus master writes and slave read operations. data on dat31 ? dat0 is latched by the pcnet-32 controller when performing bus master reads and slave write operations. the pcnet-32 controller will always follow am386dx byte lane conventions. this means that for word and byte accesses in which pcnet-32 controller drives the data bus (i.e. master write operations and slave read operations), the pcnet-32 controller will produce dupli- cates of the active bytes on the unused half of the 32- bit data bus. table 6 illustrates the cases in which duplicate bytes are created. table 6. bye duplication on data bus *note: byte duplication does not apply during an lbs16 access, see table 8. pin name pin no supply strapping resistive connection to supply recommended resistor size led2/srdclk 2 required required 324 ? in series with led, or 10 k ? without led lbs16 25 optional required 10 k ? vlben 31 required optional na wback 54 optional required 10 k ? lreqi /tdo 100 optional required 10 k ? jtagsel 106 required optional na eedo/ledpre3/srd 152 optional required 10 k ? lb/vesa 153 required optional na eedi/lnkst 154 optional required 324 ? in series with led, or 10 k ? without led eesk/led1sfbd 155 required required 324 ? in series with led, or 10 k ? without led sleep 156 optional required 10 k ? all other pins ? optional required 10 k ? be3 -be0 dat [31:24] dat [23:16] dat [15:8] dat [7:0] 1110 undef undef undef a 1101 undef undef a undef 1011 undef a undef copy a 0111 a undef copy a undef 1100 undef undef b a 1001 undef c b undef 0011* d c copy d copy c 1000 undef c b a 0001 d c b undef 0000 d c b a
18 AM79C965A intr1 ? intr4 interrupt request output an attention signal which indicates that one or more of the following status flags is set: babl, miss, merr,rint, idon, mfco, rcvcco, txstrt, or jab. each of these status flags has a mask bit which allows for suppression of intr assertion. these flags have the meaning shown in table 7. table 7. status flags note that there are four possible interrupt pins, depending upon the mode that has been selected with the jtagsel pin. only one interrupt pin may be used at one time. the active interrupt pin is selected by pro- gramming the interrupt select register (bcr21). the default setting of bcr121will select interrupt intr1 as the active interrupt. note that bcr21 is eeprom-pro- grammable. inactive interrupt pins are floated. the polarity of the interrupt signal is determined by the intlevel bit of bcr2. the interrupt pins may be programmed for level-sensitive or edge-sensitive operation. pcnet-32 controller interrupt pins will be floated at h_reset and will remain floated until either the eeprom has been successfully read, or, following an eeprom read failure, a software relocatable mode sequence has been successfully executed. lbs16 local bus size 16 input bs16 is sampled during pcnet-32 controller bus mastering activity to determine if the target device on the vl-bus is 32 or 16 bits in width. if the lbs16 signal is sampled active at least one clock period before the assertion of lrdy during a pcnet-32 controller bus master transfer, then the pcnet-32 controller will convert a single 32-bit transfer into two 16-bit transfers. not all 32-bit transfers need to be split into two 16-bit transfers. table 8 shows the sequence of transfers that will be executed for each possible 32-bit bus transfer that encounters a proper assertion of the lbs16 signal. table 8. data transfer sequence from 32-bit wide to 16-bit wide nr = no second access required for these cases. during accesses in which pcnet-32 controller is acting the vl-bus target device, the lbs16 signal will not be driven. in this case, it is expected that the vl-bus required pull-up device will bring the lbs16 signal to an inactive level and the pcnet-32 controller will be seen by the vl-bus master as a 32-bit peripheral. lclk local clock input lclk is a 1x clock that follows the same phase as a 486-type cpu clock. lclk is always driven by the sys- tem logic or the vl-bus controller to all vl-bus masters and targets. the rising edge of the clock signifies the change of cpu states, and hence, the change of pcnet-32 controller states. babl babble (csr0, bit 14) miss missed frame (csr0, bit 12) merr memory error (csr0, bit 11) rint receive interrupt (csr0, bit 10) idon initialization done (csr0, bit 8) mfco missed packet count overflow (csr4, bit 9) rcvcco receive collision count overflow (csr4, bit 5) txstrt transmit start (csr4, bit 3) jab jabber (csr4, bit 1) current access next with lbs16 be3 be2 be1 be0 be3 be2 be1 be0 1110nr 1100nr 1000101 1 0000001 1 1101nr 1001101 1 0001001 1 1011nr 0011nr 0111nr
AM79C965A 19 ldev local device output ldev is driven by the pcnet-32 controller when it recognizes an access to pcnet-32 controller i/o space. such recognition is dependent upon a valid sampled ads strobe plus valid m/io, d/c and adr31 ? adr5 values. leads local external address strobe output during vl-bus master write and read accesses the leads pin will be asserted on every t1 cycle as is specified in the vesa vl-bus specification, regardless the settings of the gcic bit of bcr18 and the cll bits bcr18. lgnt local bus grant input when lgnt is asserted and lreq is being asserted by the pcnet-32 controller, the pcnet-32 controller as- sumes ownership of the vl bus. note that this pin changes polarity when local bus mode has been selected (see pin description of hlda in 486 local bus interface section). lgnto local grant out output this signal is multiplexed with the tck pin, and is avail- able only when the multi-interrupt mode has been se- lected with the jtagsel pin. an additional local bus master may daisy-chain its lgnt signal through the pcnet-32 controller lgnto pin . the pcnet-32 controller will deliver a lgnto signal the additional local bus master whenever the pcnet-32 controller receives a lgnt from the arbitration logic, but is not simultaneously requesting the bus internally. the second local bus master must connect its lreq output to the lreqi input of the pcnet-32 controller in order to complete the local bus daisy-chain arbitration control. when sleep is not asserted, daisy chain arbitration signals that pass through the pcnet-32 controller will experience a one-clock delay from input to output (i.e. lreqi to lreq and lgnt to lgnto ). while sleep is asserted (either in snooze mode or coma mode), if the pcnet-32 controller is configured for daisy chain (lreqi and lgnto signals have been selected with the jtagsel pin), then the system arbi- tration signal lgnt will be passed directly to the daisy- chain signal lgnto without experiencing a one-clock delay. however, some combinatorial delay will be intro- duced in this path. note that this pin changes polarity when local bus mode has been selected (see pin description of hldao 486 local bus interface section). lrdy local ready output lrdy functions as an output from the pcnet-32 controller during pcnet-32 controller slave cycles. during pcnet-32 controller slave read cycles, lrdy is asserted to indicate that valid data has been presented on the data bus. during pcnet-32 controller slave write cycles, lrdy is asserted to indicate that the data on the data bus has been internally latched. lrdy will be asserted low for one clock period when the pcnet-32 controller wishes to terminate the cycle. lrdy is then driven high for one-half of one clock period before being released. lrdy is floated if the pcnet-32 controller is not the current slave on the local bus. lreq local bus request output lreq is used by the pcnet-32 controller to gain control of the vl-bus and become the active vl bus master. lreq is active low. once asserted, lreq remains ac- tive until lgnt has become active, independent of subsequent assertion of sleep or setting of the stop bit or access to the s_reset port (offset 14h). note that this pin changes polarity when local bus mode has been selected (see pin description of hold in 486 local bus interface section). lreqi local bus request in input this signal is multiplexed with the tdo pin, and is available only when the multi-interrupt mode has been selected with the jtagsel pin. an additional local bus master may daisy-chain its bus hold request signal through the pcnet-32 controller lreqi pin. the pcnet-32 controller will convey the lreqi request to the arbitration logic via the pcnet-32 controller lreq output. the second local bus master must connect its lgnt input to the lgnto output of the pcnet-32 controller in order to complete the local bus daisy-chain arbitration control. when sleep is not asserted, daisy chain arbitration signals that pass through the pcnet-32 controller will experience a one-clock delay from input to output (i.e. lreqi to lreq and lgnt to lgnto ). while sleep is asserted (either in snooze mode or coma mode), if the pcnet-32 controller is configured for daisy chain (lreqi and lgnto signals have been selected with the jtagsel pin), then the daisy-chain signal lreqi will be passed directly to the system arbi-
20 AM79C965A tration signal lreq without experiencing a one-clock delay. however, some combinatorial delay will be intro- duced in this path. multi-interrupt mode has been selected and the daisy- chain arbitration feature is not used, then the lreqi input should be tied to v dd . note that this pin changes polarity when local busmode has been selected (see pin description of holdi in 486 local bus interface section). m/io memory i/o select input/output during slave accesses to the pcnet-32 controller, the m/io pin, along with d/c and w/r , indicates the type cycle that is being performed. pcnet-32 controller will only respond to local bus accesses in which m/io sampled as a zero by the pcnet-32 controller. during pcnet-32 controller bus master accesses, the m/io pin is an output and will always be driven high. m/io is floated if the pcnet-32 controller is not the cur- rent master on the local bus. rdyrtn ready return input rdyrtn functions as an input to the pcnet-32 control- ler. rdyrtn is used to terminate all master accesses performed by the pcnet-32 controller, except that linear burst transfers may also be terminated with the brdy signal. rdyrtn is used to terminate slave read accesses to pcnet-32 controller i/o space. when asserted during slave read accesses to pcnet-32 controller i/o space, rdyrtn indicates that the bus mastering device has seen the lrdy that was generated by the pcnet-32 controller and has accepted the pcnet-32 controller slave read data. therefore, pcnet-32 controller will hold slave read data on the bus until it synchronously samples the rdyrtn input as active low. the pcnet-32 controller will not hold lrdy valid asserted during this time. the duration of the lrdy pulse generated by the pcnet-32 controller will always be a single lclk cycle. rdyrtn is ignored during slave write accesses pcnet-32 controller i/o space. slave write accesses pcnet-32 controller i/o space are considered termi- nated by the pcnet-32 controller at the end of the cycle during which the pcnet-32 controller issues an active rdy. in systems where both a lrdy and rdyrtn (or equivalent) signals are provided, then lrdy must not be tied to rdyrtn . most systems now provide for local device ready input to the memory controller that separate from the cpu ready signal. this second ready signal is usually labeled as readyin . this signal should be connected to the pcnet-32 controller lrdy signal. the cpu ready signal should be con- nected to the pcnet-32 controller rdyrtn pin. in systems where only one ready signal is provided, then the pcnet-32 controller lrdy output may be tied the pcnet-32 controller rdyrtn input. reset system reset input when reset is asserted low and the lb/vesa pin has been tied to vss, then the pcnet-32 controller performs an internal system reset of the h_reset type (hardware_ reset). the reset pin must be held for a minimum of 30 lclk periods when vl mode has been selected. while in the h_reset state, the pcnet-32 controller will float or de-assert all outputs. w/r write/read select input/output during slave accesses to the pcnet-32 controller, the w/r pin, along with d/c and m/io , indicates the type of cycle that is being performed. during pcnet-32 controller bus master accesses, the w/r pin is an output. w/r is floated if the pcnet-32 controller is not the cur- rent master on the local bus. wback write back input wback is monitored as in input during vl-bus master accesses. when pcnet-32 controller is current vl-bus master, the pcnet-32 controller will float all appropriate bus mastering signals within 1 clock period of the assertion of wback . when wback is de-asserted, pcnet-32 controller will re-execute any accesses that were suspended due to the assertion of wback and then will proceed with other scheduled accesses, if any. register access cannot be performed to the pcnet-32 device while wback is asserted. board interface led1 led1 output this pin is shared with the eesk function. when operating as led1, the function and polarity on this pin are programmable through bcr5. the led1 output from the pcnet-32 controller is capable of sinking the necessary 12 ma of current to drive an led directly. the led1 pin is also used during eeprom auto- detection to determine whether or not an eeprom is present at the pcnet-32 controller microwire interface. at the trailing edge of reset , this pin is sampled to determine the value of the eedet bit in bcr19. a sampled high value means that an eeprom is present, and eedet will be set to one. a sampled
AM79C965A 21 low value means that an eeprom is not present, and eedet will be set to zero. see the ? eeprom auto- detection ? section for more details. if no led circuit is to be attached to this pin, then a pull- up or pull-down resistor must be attached instead, in order to resolve the eedet setting. led2 led2 output this pin is shared with the srdclk function. when operating as led2, the function and polarity on this pin are programmable through bcr6. the led2 output from the pcnet-32 controller is capable of sinking the necessary 12 ma of current to drive an led directly. this pin also selects address width for software relocatable mode. when this pin is high during software relocatable mode, then the device will be programmed to use 32 bits of addressing while snooping accesses on the bus during software relocatable mode. when this pin is low during software relocatable mode, then the device will be programmed to use 24 bits of addressing while snooping accesses on the bus during software relocatable mode. the upper 8 bits of address will be assumed to match during the snooping operation when led2 is low. the 24-bit addressing mode is intended for use in systems that employ the gpsi signals. for more information on the gpsi function see section general purpose serial interface . if no led circuit is to be attached to this pin, then a pull up or pull down resistor must be attached instead, in order to resolve the software relocatable mode ad- dress width setting. ledpre3 ledpre3 output this pin is shared with the eedo function. when operating as ledpre3, the function and polarity on this pin are programmable through bcr7. this signal is labeled as led ? pre ? 3 because of the multi- function nature of this pin. if an led circuit were directly attached to this pin, it would create an i ol requirement that could not be met by the serial eeprom that would also be attached to this pin. therefore, if this pin is to be used as an additional led output while an eeprom is used in the system, then buffering is required between the ledpre3 pin and the led circuit. if no eeprom is included in the system design, then the ledpre3 signal may be directly connected to an led without buffering. the ledpre3 output from the pcnet-32 controller is capable of sinking the necessary 12 ma of current to drive an led in this case. for more details regarding led connection, see the section on leds. lnkst link status output this pin provides 12 ma for driving an led. it indicates an active link connection on the 10base-t interface. the function and polarity are programmable through bcr4. note that this pin is multiplexed with the eedi function. this pin remains active in snooze mode. shfbusy shift busy output the function of the shfbusy signal is to indicate when the last byte of the eeprom contents has been shifted out of the eeprom on the eedo signal line. this information is useful for external eeprom- programmable registers that do not use the microwire protocol, as is described herein: when the pcnet-32 controller is performing a serial read of the eeprom through the microwire interface, the shfbusy signal will be driven high. shfbusy can serve as a serial shift enable to allow the eeprom data to be serially shifted into an external device or series of devices. the shfbusy signal will remain actively driven high until the end of the eeprom read operation. if the eeprom checksum was verified, then the shfbusy signal will be driven low at the end of the eeprom read operation. if the eeprom checksum verification failed, then the shfbusy signal will remain high. this function effectively demarcates the end of a successful eeprom read operation and therefore is useful as a programmable-logic low-active output enable signal. for more details on external eeprom- programmable registers, see the eeprom microwire access section under hardware access. this pin can be controlled by the host system by writing to bcr19, bit 3 (ebusy). sleep sleep input when sleep input is asserted (active low), the pcnet-32 controller performs an internal system reset of the s_reset type and then proceeds into a power savings mode. (the reset operation caused by sleep assertion will not affect bcr registers.) all outputs will be placed in their normal s_reset condition. during sleep mode, all pcnet-32 controller inputs will be ig- nored except for the sleep pin itself. de-assertion of sleep results in wake-up. the system must refrain from starting the network operations of the pcnet-32 controller for 0.5 seconds following the de-assertion of the sleep signal in order to allow internal analog cir- cuits to stabilize. both lclk and xtal1 inputs must have valid clock signals present in order for the sleep command to take effect.
22 AM79C965A if sleep is asserted while lreq is asserted, then the pcnet-32 controller will perform an internal system s_reset and then wait for the assertion of lgnt . when lgnt is asserted, the lreq signal will be de- asserted and then the pcnet-32 controller will proceed to the power savings mode. note that the internal system s_reset will not cause the lreq signal to be de-asserted. the sleep pin should not be asserted during power supply ramp-up. if it is desired that sleep be asserted at power-up time, then the system must delay the assertion of sleep until three lclk cycles after the completion of a valid pin reset operation. xtal1 ? xtal2 crystal oscillator inputs input/output the crystal frequency determines the network data rate. the pcnet-32 controller supports the use of quartz crystals to generate a 20 mhz frequency compatible with the iso 8802-3 (ieee/ansi 802.3) network frequency tolerance and jitter specifications. see the section external crystal characteristics (in section manchester encoder/decoder) for more detail. the network data rate is one-half of the crystal fre- quency. xtal1 may alternatively be driven using an external cmos level source, in which case xtal2 must be left unconnected. note that when the pcnet-32 controller is in coma mode, there is an internal 22 kw resistor from xtal1 to ground. if an external source drives xtal1, some power will be consumed driving this resistor. if xtal1 is driven low at this time power consumption will be minimized. in this case, xtal1 must remain active for at least 30 cycles after the assertion of sleep and de-assertion of lreq . microwire eeprom interface eesk eeprom serial clock output the eesk signal is used to access the external iso 8802-3 (ieee/ansi 802.3) address prom. this pin is designed to directly interface to a serial eeprom that uses the microwire interface protocol. eesk is con- nected to the microwire eeprom ? s clock pin. it is con- trolled by either the pcnet-32 controller directly during a read of the entire eeprom, or indirectly by the host system by writing to bcr19, bit 1. eesk can be used during programming of external eeprom- programmable registers that do not use the microwire protocol as follows: when the pcnet-32 controller is performing a serial read of the ieee address eeprom through the microwire interface, the shfbusy signal will serve as a serial shift enable to allow the eeprom data to be serially shifted into an external device or series of de- vices. this same signal can be used to gate the output of the programmed logic to avoid the problem of releasing intermediate values to the rest of the system board logic. the eesk signal can serve as the clock, and eedo will serve as the input data stream to the programmable shift register. eedo eeprom data out input the eedo signal is used to access the external iso 8802-3 (ieee/ansi 802.3) address prom. this pin is designed to directly interface to a serial eeprom that uses the microwire interface protocol. eedo is con- nected to the microwire eeprom ? s data output pin. it is controlled by the eeprom during reads. it may be read by the host system by reading bcr19, bit 0. eedo can be used during programming of external eeprom-programmable registers that do not use the microwire protocol as follows: when the pcnet-32 controller is performing a serial read of the ieee address eeprom through the microwire interface, the shfbusy signal will serve as a serial shift enable to allow the eeprom data to be serially shifted into an external device or series of de- vices. this same signal can be used to gate the output of the programmed logic to avoid the problem of releasing intermediate values to the rest of the system board logic. the eesk signal can serve as the clock, and eedo will serve as the input data stream to the programmable shift register. eecs eeprom chip select output the function of the eecs signal is to indicate to the microwire eeprom device that it is being accessed. the eecs signal is active high. it is controlled by either the pcnet-32 controller during a read of the entire eeprom, or indirectly by the host system by writing to bcr19, bit 2. eedi eeprom data in output the eedi signal is used to access the external iso 8802-3 (ieee/ansi 802.3) address prom. eedi func- tions as an output. this pin is designed to directly inter- face to a serial eeprom that uses the microwire interface protocol. eedi is connected to the microwire eeprom ? s data input pin. it is controlled by either the pcnet-32 controller during command portions of a read of the entire eeprom, or indirectly by the host system by writing to bcr19, bit 0.
AM79C965A 23 attachment unit interface ci collision in input a differential input pair signaling the pcnet-32 controller that a collision has been detected on the network media, indicated by the ci inputs being driven with a 10 mhz pattern of sufficient amplitude and pulse width to meet iso 8802-3 (ieee/ansi 802.3) standards. operates at pseudo ecl levels. di data in input a differential input pair to the pcnet-32 controller carry- ing manchester encoded data from the network. oper- ates at pseudo ecl levels. do data out output a differential output pair from the pcnet-32 controller for transmitting manchester encoded data to the network. operates at pseudo ecl levels. twisted pair interface rxd 10base-t receive data input 10base-t port differential receivers. txd 10base-t transmit data output 10base-t port differential drivers. txp 10base-t pre-distortion control output these outputs provide transmit predistortion control in conjunction with the 10base-t port differential drivers. external address detection interface the eadi interface is enabled through bit 3 of bcr2 (eadisel). ear external address reject low input an eadi input signal. the incoming frame will be checked against the internally active address detection mechanisms and the result of this check will be or ? d with the value on the ear pin. the ear pin is defined as reject . see the eadi section for details regarding the function and timing of this signal. note that this pin is multiplexed with the intr2 pin. sfbd start frame ? byte delimiter output start frame ? byte delimiter enable. eadi output signal. an initial rising edge on this signal indicates that a start of frame delimiter has been detected. the serial bit stream will follow on the srd signal, commencing with the destination address field. sfbd will go high for 4 bit times (400 ns) after detecting the second ? 1 ? in the sfd (start of frame delimiter) of a received frame. sfbd will subsequently toggle every 400 ns (1.25 mhz frequency) with each rising edge indicating the first bit of each subsequent byte of the received serial bit stream. sfbd will be inactive during frame transmission. note that this pin is multiplexed with the led1 pin. srd serial receive data output an eadi output signal. srd is the decoded nrz data from the network. this signal can be used for external address detection. note that when the 10base-t port is selected, transitions on srd will only occur during receive activity. when the aui port is selected, transitions on srd will occur during both transmit and receive activity. note that this pin is multiplexed with the ledpre3 pin. srdclk serial receive data clock output an eadi output signal. serial receive data is synchronous with reference to srdclk. note that when the 10base-t port is selected, transitions on srdclk will only occur during receive activity. when the aui port is selected, transitions on srdclk will occur during both transmit and receive activity. note that this pin is multiplexed with the led2 pin. general purpose serial interface the gpsi interface is selected through the portsel bits of the mode register (csr15) and enabled through the tstshdw[1] bit (bcr18) or the coretest bit (csr124). note that when gpsi test mode is invoked, slave ad- dress decoding must be restricted to the lower 24 bits of the address bus by setting the ioaw24 bit in bcr2 and by pulling led2 low during software relocatable mode. the upper 8 bits of the address bus will always be considered matched when examining incoming i/o addresses. during master accesses while in gpsi mode, the pcnet-32 controller will not drive the upper 8 bits of the address bus with address information. see the gpsi section for more detail.
24 AM79C965A txdat transmit data input/output txdat is an output, providing the serial bit stream for transmission, including preamble, sfd data and fcs field, if applicable. note that the txdat pin is multiplexed with the a31 pin. txen transmit enable input/output txen is an output, providing an enable signal for trans- mission. data on the txdat pin is not valid unless the txen signal is high. note that the txen pin is multiplexed with the a30 pin. stdclk serial transmit data clock input stdclk is an input, providing a clock signal for mac activity, both transmit and receive. rising edges of the stdclk can be used to validate txdat output data. the stdclk pin is multiplexed with the a29 pin. note that this signal must meet the frequency stability requirement of the iso 8802-3 (ieee/ansi 802.3) specification for the crystal. clsn collision input/output clsn is an input, indicating to the core logic that a collision has occurred on the network. note that the clsn pin is multiplexed with the a28 pin. rxcrs receive carrier sense input/output rxcrs is an input. when this signal is high, it indi- cates to the core logic that the data on the rxdat input pin is valid. note that the rxcrs pin is multiplexed with the a27 pin. srdclk serial receive data clock input/output srdclk is an input. rising edges of the srdclk sig- nal are used to sample the data on the rxdat input whenever the rxcrs input is high. note that the srdclk pin is multiplexed with the a26 pin. rxdat receive data input/output rxdat is an input. rising edges of the srdclk signal are used to sample the data on the rxdat input when- ever the rxcrs input is high. note that the rxdat pin is multiplexed with the a25 pin. ieee 1149.1 test access port interface tck test clock input the clock input for the boundary scan test mode opera- tion. tck can operate up to 10 mhz. if left unconnected, this pin has a default value of high. tdi test data input input the test data input path to the pcnet-32 controller. if left unconnected, this pin has a default value of high. tdo test data output output the test data output path from the pcnet-32 controller. tdo is floated when the jtag port is inactive. tms test mode select input a serial input bit stream is used to define the specific boundary scan test to be executed. if left unconnected, this pin has a default value of high. power supply pins avdd analog power (4 pins) power there are four analog +5 volt supply pins. special attention should be paid to the printed circuit board layout to avoid excessive noise on these lines. refer to appendix b and the pcnet family technical manual (pid# 18216a) for details. avss analog ground (2 pins) power there are two analog ground pins. special attention should be paid to the printed circuit board layout to avoid excessive noise on these lines. refer to appendix b and the pcnet family technical manual for details. dvdd digital power (3 pins) power there are 3 digital power supply pins (dvdd1, dvdd 2, and dvdd3) used by the internal digital circuitry. dvddclk digital power clock (1 pin) power this pin is used to supply power to the clock buffering circuitry.
AM79C965A 25 dvddo i/o buffer digital power (5 pins) power there are 5 digital power supply pins (dvddo1 ? dvddo5) used by input/output buffer drivers. dvss digital ground (4 pins) ground there are 4 digital ground pins (dvss1 ? dvss4) used by the internal digital circuitry. dvssclk digital ground clock (1 pin) ground this pin is used to supply a ground to the clock buffering circuitry. dvssn i/o buffer digital ground (15 pins) ground these 15 ground pins (dvssn1 ? dvssn15) are used by the input/output buffer drivers. dvsspad digital ground pad (1 pin) ground this pin is used by the input/output logic circuits.
26 AM79C965A vesa vl-bus / local bus pin cross-reference listed by pin number pin # vesa vl-bus mode pin name local bus mode pin name pin # vesa vl-bus mode pin name local bus mode pin name 1 nc nc 41 nc nc 2 led2/srdclk led2/srdclk 42 rdyrtn rdyrtn 3 dvssn1 dvssn1 43 lrdy rdy 4 adr17 a17 44 w/r w/r 5 adr16 a16 45 ads ads 6 adr15 a15 46 m/io m/io 7 adr14 a14 47 be3 be3 8 dvddo1 dvddo1 48 d/c d/c 9 adr13 a13 49 reset reset 10 adr12 a12 50 be2 be2 11 dvssn2 dvssn2 51 dvssn5 dvssn5 12 adr11 a11 52 be1 be1 13 adr10 a10 53 be0 be0 14 adr9 a9 54 wback boff 15 adr8 a8 55 dat31 d31 16 adr7 a7 56 dat30 d30 17 dvssn3 dvssn3 57 dat29 d29 18 adr6 a6 58 dat28 d28 19 adr5 a5 59 dvssn6 dvssn6 20 dvsspad dvsspad 60 dat27 d27 21 adr4 a4 61 dat26 d26 22 adr3 a3 62 dat25 d25 23 dvssn4 dvssn4 63 dat24 d24 24 adr2 a2 64 dat23 d23 25 lbs16 ahold 65 dvddo3 dvddo3 26 dvdd1 dvdd1 66 dat22 d22 27 leads eads 67 dvssn7 dvssn7 28 dvssclk dvssclk 68 dat21 d21 29 lclk bclk 69 dvss2 dvss2 30 dvddclk dvddclk 70 dat20 d20 31 vlben am486 71 dat19 d19 32 blast blast 72 dat18 d18 33 lgnt hlda 73 dat17 d17 34 brdy brdy 74 dvssn8 dvssn8 35 dvddo2 dvddo2 75 dat16 d16 36 lreq hold 76 dat15 d15 37 dvss1 dvss1 77 dat14 d14 38 ldev ldev 78 dat13 d13 39 nc nc 79 nc nc 40 nc nc 80 nc nc
AM79C965A 27 vesa vl-bul / local bus pin cross-reference (continued) listed by pin number pin # vesa vl-bus mode pin name local bus mode pin name pin # vesa vl-bus mode pin name local bus mode pin name 81 nc nc 121 nc nc 82 dat12 d12 122 nc nc 83 dvssn9 dvssn9 123 avss1 avss1 84 dat11 d11 124 do- do- 85 dat10 d10 125 do+ do+ 86 dat9 d9 126 avdd1 avdd1 87 dat8 d8 127 di- di- 88 dat7 d7 128 di+ di+ 89 dvssn10 dvssn10 129 ci- ci- 90 dat6 d6 130 ci+ ci+ 91 dvddo4 dvddo4 131 avdd2 avdd2 92 dat5 d5 132 adr31 a31 93 dat4 d4 133 adr30 a30 94 dat3 d3 134 adr29 a29 95 dvdd2 dvdd2 135 dvdd3 dvdd3 96 dat2 d2 136 dvss4 dvss4 97 dvssn11 dvssn11 137 adr28 a28 98 dat1 d1 138 adr27 a27 99 dat0 d0 139 dvssn13 dvssn13 100 lreqi /tdo holdi/tdo 140 adr26 a26 101 lgnto /tck hldao /tck 141 adr25 a25 102 intr4/tms intr4/tms 142 dvddo5 dvddo5 103 dvssn12 dvssn12 143 adr24 a24 104 intr3/tdi intr3/tdi 144 adr23 a23 105 intr2/ear intr2/ear 145 adr22 a22 106 jtagsel jtagsel 146 adr21 a21 107 dvss3 dvss3 147 dvssn14 dvssn14 108 rxd- rxd- 148 adr20 a20 109 rxd+ rxd+ 149 adr19 a19 110 avdd4 avdd4 150 adr18 a18 111 txp- txp- 151 intr1 intr1 112 txd- txd- 152 eedo/ledpre3/srd eedo/ledpre3/srd 113 txp+ txp+ 153 lb/vesa lb/vesa 114 txd+ txd+ 154 eedi/lnkst eedi/lnkst 115 avdd3 avdd3 155 eesk/led1/sfbd eesk/led1/sfbd 116 xtal1 xtal1 156 sleep sleep 117 avss2 avss2 157 eecs eecs 118 xtal2 xtal2 158 dvssn15 dvssn15 119 nc nc 159 shfbusy shfbusy 120 nc nc 160 nc nc
28 AM79C965A block diagram: 486 local bus mode buffer management unit fifo control microwire, led, and jtag control 486 local bus interface unit am486 lb/vesa ads brdy be0 be3 bclk boff blast rdyrtn m/io d/c w/r intr1 intr4 hold holdi hlda hldao sleep ldev eads ahold rdy a2 a31 d0 d31 reset eedi 802.3 mac core manchester encoder/ decoder (pls) and aui port 10base-t mau lnkst xtal1 do+/ ci+/ di+/ rxd+/ txd+/ txp+/ xtal2 eecs eesk shfbusy tck tdi tms tdo eedo led1-led3 rcv fifo xmt fifo 18219-2
AM79C965A 29 connection diagram: 486 local bus mode 160 159 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 131 130 129 128 127 126 125 124 123 122 121 132 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 91 90 89 88 87 86 85 84 83 82 81 92 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 78 79 80 69 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 29 jtagsel d10 d11 dvssn9 d12 d9 nc xtal1 txp ? avdd4 xtal2 nc rxd+ txd ? txd+ rxd ? dvss3 intr2/ear intr3/tdi dvssn12 intr4/tms holdi/tdo d0 d1 d2 dvdd2 d3 d5 dvddo4 d6 dvssn10 d7 d8 d4 dvssn11 hldao/tck avdd3 txp+ nc avss2 eads dvssclk bclk am486 blast hlda brdy dvddo2 hold dvss1 ldev nc nc nc led2/srdclk dvssn1 a17 a16 a15 a14 dvdd01 a13 a12 dvssn2 a11 a10 a8 a7 a6 a5 dvsspad a4 a3 dvssn4 a 2 ahold dvdd1 dvddclk dvssn3 nc rdyrtn rdy w/r ads m/io be3 d/c dvssn6 d20 d31 d30 d29 d28 d27 d25 d24 d23 d22 dvssn7 d21 dvss2 d19 d18 dvssn8 d17 nc d14 d15 be2 be1 be0 d26 d16 nc dvssn5 dvdd03 boff d13 intr1 a19 dvssn13 a20 a27 dvssn14 a25 a22 a24 a28 dvddo5 dvss4 a31 avdd2 ci+ ci ? di ? avdd1 do ? nc nc a21 eedo/ledpre3/srd lb/vesa a18 eedi/lnkst eesk/led1/sfbd sleep eecs nc shfbusy dvssn15 a26 a30 di+ do+ avss1 a23 dvdd3 am79c971 a9 reset a29 18219-4
30 AM79C965A pin designations: 486 local bus mode listed by pin number pin no. name pin no. name pin no. name pin no. name 1 nc 41 nc 81 nc 121 nc 2 led2/srdclk 42 rdyrtn 82 d12 122 nc 3 dvssn1 43 rdy 83 dvssn9 123 avss1 4 a17 44 w/r 84 d11 124 do ? 5 a16 45 ads 85 d10 125 do+ 6 a15 46 m/io 86 d9 126 avdd1 7 a14 47 be3 87 d8 127 di ? 8 dvddo1 48 d/c 88 d7 128 di+ 9 a13 49 reset 89 dvssn10 129 ci ? 10 a12 50 be2 90 d6 130 ci+ 11 dvssn2 51 dvssn5 91 dvddo4 131 avdd2 12 a11 52 be1 92 d5 132 a31 13 a10 53 be0 93 d4 133 a30 14 a9 54 boff 94 d3 134 a29 15 a8 55 d31 95 dvdd2 135 dvdd3 16 a7 56 d30 96 d2 136 dvss4 17 dvssn3 57 d29 97 dvssn11 137 a28 18 a6 58 d28 98 d1 138 a27 19 a5 59 dvssn6 99 d0 139 dvssn13 20 dvsspad 60 d27 100 holdi/tdo 140 a26 21 a4 61 d26 101 hldao/tck 141 a25 22 a3 62 d25 102 intr4/tms 142 dvddo5 23 dvssn4 63 d24 103 dvssn12 143 a24 24 a2 64 d23 104 intr3/tdi 144 a23 25 ahold 65 dvddo3 105 intr2/ear 145 a22 26 dvdd1 66 d22 106 jtagsel 146 a21 27 eads 67 dvssn7 107 dvss3 147 dvssn14 28 dvssclk 68 d21 108 rxd ? 148 a20 29 bclk 69 dvss2 109 rxd+ 149 a19 30 dvddclk 70 d20 110 avdd4 150 a18 31 am486 71 d19 111 txp ? 151 intr1 32 blast 72 d18 112 txd ? 152 eedo/ledpre3/srd 33 hlda 73 d17 113 txp+ 153 lb/vesa 34 brdy 74 dvssn8 114 txd+ 154 eedi/lnkst 35 dvddo2 75 d16 115 avdd3 155 eesk/led1/sfbd 36 hold 76 d15 116 xtal1 156 sleep 37 dvss1 77 d14 117 avss2 157 eecs 38 ldev 78 d13 118 xtal2 158 dvssn15 39 nc 79 nc 119 nc 159 shfbusy 40 nc 80 nc 120 nc 160 nc
AM79C965A 31 pin designations: 486 local bus mode listed by pin name name pin no. name pin no. name pin no. name pin no. a2 24 be0 53 d30 56 eesk/led1/sfbd 155 a3 22 be1 52 d31 55 hlda 33 a4 21 be2 50 di+ 128 hldao/tck 101 a5 19 be3 47 di ? 127 hold 36 a6 18 blast 32 do+ 125 holdi/tdo 100 a7 16 boff 54 do ? 124 intr1 151 a8 15 brdy 34 dvdd1 26 intr2/ear 105 a9 14 ci+ 130 dvdd2 95 intr3/tdi 104 a10 13 ci ? 129 dvdd3 135 intr4/tms 102 a11 12 d/c 48 dvddclk 30 jtagsel 106 a12 10 d0 99 dvddo1 8 lb/vesa 153 a13 9 d1 98 dvddo2 35 ldev 38 a14 7 d2 96 dvddo3 65 led2/srdclk 2 a15 6 d3 94 dvddo4 91 m/io 46 a16 5 d4 93 dvddo5 142 nc 1 a17 4 d5 92 dvss1 37 nc 39 a18 150 d6 90 dvss2 69 nc 40 a19 149 d7 88 dvss3 107 nc 41 a20 148 d8 87 dvss4 136 nc 79 a21 146 d9 86 dvssclk 28 nc 80 a22 145 d10 85 dvssn1 3 nc 81 a23 144 d11 84 dvssn2 11 nc 119 a24 143 d12 82 dvssn3 17 nc 120 a25 141 d13 78 dvssn4 23 nc 121 a26 140 d14 77 dvssn5 51 nc 122 a27 138 d15 76 dvssn6 59 nc 160 a28 137 d16 75 dvssn7 67 rdy 43 a29 134 d17 73 dvssn8 74 rdyrtn 42 a30 133 d18 72 dvssn9 83 reset 49 a31 132 d19 71 dvssn10 89 rxd+ 109 ads 45 d20 70 dvssn11 97 rxd ? 108 ahold 25 d21 68 dvssn12 103 shfbusy 159 am486 31 d22 66 dvssn13 139 sleep 156 avdd1 126 d23 64 dvssn14 147 txd+ 114 avdd2 131 d24 63 dvssn15 158 txd ? 112 avdd3 115 d25 62 dvsspad 20 txp+ 113 avdd4 110 d26 61 eads 27 txp ? 111 avss1 123 d27 60 eecs 157 w/r 44 avss2 117 d28 58 eedi/lnkst 154 xtal1 116 bclk 29 d29 57 eedo/ledpre3/srd 152 xtal2 118
32 AM79C965A pin designations: 486 local bus mode listed by group pin name pin function type driver no. of pins 486/386dx local bus interface a2 ? a31 address bus io ts 30 ads address status i/o ts 1 ahold address hold i 1 am486 am486 mode select i 1 bclk bus clock i 1 be0 -be3 byte enable i/o ts 4 blast burst last o ts 1 boff backoff i 1 brdy burst ready i/o ts 1 d/c data/control select i/o ts 1 d0 ? d31 data bus i/o ts 32 eads external address strobe o ts 1 hlda hold acknowledge i 1 hldao hold acknowledge out i/o ts 1 hold hold request o o8 1 holdi hold request in i/o ts 1 intr1 interrupt number 1 o ts 1 intr2 interrupt number 2 i/o ts 1 intr3 interrupt number 3 i/o ts 1 intr4 interrupt number 4 i/o ts 1 jtagsel jtag select i 1 lb/vesa local bus/vesa vl-bus select pin i 1 ldev local device o o4 1 m/io memory/i/o select i/o ts 1 rdy ready o ts 1 rdyrtn ready return i 1 w/r write/read select i/o ts 1 board interface eecs microwire serial prom chip select o o8 1 eedi/lnkst microwire serial eeprom data in/link status o led 1 eedo/ledpre3 microwire address prom data out/led3 predriver i/o led 1 eesk/led1 microwire serial prom clock/led1 o led 1 led2 led output number 2 o led 1 reset reset i 1 shfbusy shift busy (for external eeprom-programmable logic) o o8 1 sleep sleep mode i 1 xtal1 crystal input i 1 xtal2 crystal output o 1
AM79C965A 33 pin designations: 486 local bus mode (continued) listed by group pin name pin function type driver no. of pins attachment unit interface (aui) ci+/ci ? aui collision differential pair i 2 di+/di ? aui data in differential pair i 2 do+/do ? aui data out differential pair o do 2 twisted-pair transceiver interface (10base-t) rxd+/rxd ? receive differential pair i 2 txd+/txd ? transmit differential pair o tdo 2 txp+/txp ? transmit predistortion differential pair o tpo 2 lnkst /eedi link status/microwire serial eeprom data in o led 1 ieee 1149.1 test access port interface (jtag) tck test clock i/o ts 1 tdi test data in i/o ts 1 tdo test data out i/o ts 1 tms test mode select i/o ts 1 external address detection interface (eadi) ear external address reject low i/o ts 1 srd serial receive data i/o ts 1 srdclk serial receive data clock i/o ts 1 sfbd start frame ? byte delimiter o led 1 power supplies avdd analog power p 4 avss analog ground p 2 dvdd digital power p 3 dvddclk digital power clock p 1 dvddo i/o buffer digital power p 5 dvss digital ground p 4 dvssclk digital ground clock p 1 dvssn i/o buffer digital ground p 15 dvsspad digital ground pad p 1
34 AM79C965A pin designations: 486 local bus mode driver type table 9. output driver types table 10. pins with pullups name type i ol (ma) i ol (ma) pf ts tri-state 8 -0.4 50 o8 totem pole 8 -0.4 50 o4 totem pole 4 -0.4 50 od open drain 8 50 led led 12 -0.4 50 signal pullup tdi 10 k ? tms 10 k ? tck 10 k ?
AM79C965A 35 pin description: 486 local bus mode configuration pins jtagsel jtag function select input the value of this pin will asynchronously select between jtag mode and multi-interrupt mode. the value of this pin will asynchronously affect the function of the jtag ? intr ? daisy chain arbitration pins, regardless of the state of the reset pin and regardless of the state of the bclk pin. if the value is a ? 1 ? , then the pcnet-32 controller will be programmed for jtag mode. if the value is a ? 0 ? , then the pcnet-32 controller will be programmed for multi-interrupt mode. when programmed for jtag mode, four pins of the pcnet-32 controller will be configured as a jtag (ieee 1149.1) test access port. when programmed for multi- interrupt mode, two of the jtag pins will become interrupts and two jtag pins will be used for daisy chain arbitration support. table 11 below outlines the pin changes that will occur by programming the jtagsel pin. table 11. jtag pin changes the jtagsel pin may be tied directly to v dd or v ss . a series resistor may be used but is not necessary. lb/vesa local bus/vesa vl-bus select input the value of this pin will asynchronously determine the operating mode of the pcnet-32 controller, regardless of the state of reset and regardless of the state of the bclk pin. if the lb / vesa pin is tied to v dd , then the pcnet-32 controller will be programmed for local bus mode. if the lb / vesa pin is tied to v ss , then the pcnet-32 controller will be programmed for vesa vl-bus mode. note that the setting of lb/vesa determines the func- tionality of the following pins (names in parentheses are pins in the vesa vl-bus mode): am486 (vlben), reset (reset ), ahold (lbs16 ), hold (lreq ), hlda(lgnt ), holdi (lreqi ), and hldao (lgnto ). am486 am486 mode select input the am486 pin should be tied directly to v ss . a series resistor may be used but is not necessary. note: this pin is used to enable bursing in the vesa vl-bus mode when the lb/vesa pin has been tied to vss. see the pin description for the vlben pin in the vesa vl-bus mode section. configuration pin settings summary table 12 shows the possible pin configurations that may be invoked with the pcnet-32 controller configuration pins. table 12. configuration pin settings *x = don ? t care pin jtagsel=1 jtag mode jtagsel=0 multi-interrupt mode hldao/tck tck hldao holdi/tdo tdo holdi intr3/tdi tdi intr3 intr4/tms tms intr4 lb/vesa am486/am386 jtagsel mode selected 0 x* 0 vl bus mode with 4 interrupts and daisy chain arbitration 0 x* 1 vl bus mode with 2 interrupts and jtag 1 0 0 am486 mode with 4 interrupts and daisy chain arbitration 1 0 1 am486 mode with 2 interrupts and jtag 1 1 x reserved
36 AM79C965A table 13. pin connections to power/ground pin connections to v dd or v ss several pins may be connected to v dd or v ss for various application options. some pins are required to be connected to v dd or v ss in order to set the controller into a particular mode of operation, while other pins might be connected to v dd or v ss if that pin ? s function is not implemented in a specific application. table 13 shows which pins require a connection to v dd or v ss , and which pins may optionally be connected to v dd or v ss because the application does not support that pin ? s function. the table also shows whether or not the connections need to be resistive. local bus interface a2 ? a31 address bus input/output address information which is stable during a bus operation, regardless of the source. when the pcnet-32 controller is current master, a1 ? a31 will be driven. when the pcnet-32 controller is not current master, the a2 ? a31 lines are continuously monitored to determine if an address match exists for i/o slave transfers. some portion of the address bus will be floated at the time of an address hold operation, which is signaled with the ahold pin. the number of address bus pins to be floated will be determined by the value of the cache line length register (bcr18, bits 15-11). ads address status input/output when driven low, this signal indicates that a valid bus cycle definition and address are available on the m/io , d/c , w/r and a2 ? a31 pins of the local bus interface. at that time, the pcnet-32 controller will examine the combination of m/io , d/c , w/r , and the a2 ? a31 pins to determine if the current access is directed toward the pcnet-32 controller. ads will be driven low when the pcnet-32 controller performs a bus master access on the local bus. ahold address hold input this pin is always an input. the pcnet-32 controller will put some portion of the address bus into a high imped- ance state whenever this signal is asserted. ahold may be asserted by an external cache controller when a cache invalidation cycle is being performed. ahold may be asserted at any time, including times when the pcnet-32 controller is the active bus master. note that this pin is multiplexed with a vesa vl function: lbs16 . some portion of the address bus will be floated at the time of an address hold operation, which is signaled with the ahold pin. the number of address bus pins to be floated will be determined by the value of the cache line length (cll) register (bcr18, bits 15-11) as shown in table 14. pin name pin no supply strapping resistive connection to supply recommended resistor size led2/srdclk 2 required required 324 ? in series with led, or 10 k ? without led ahold 25 optional required 10 k ? am486 31 required optional na boff 54 optional required 10 k ? holdi/tdo 100 optional required 10 k ? jtagsel 106 required optional na eedo/ledpre3/srd 152 optional required 10 k ? lb/vesa 153 required optional na eedi/lnkst 154 optional required 324 ? in series with led, or 10 k ? without led eesk/led1/sfbd 155 required required 324 ? in series with led, or 10 k ? without led sleep 156 optional required 10 k ? all other pins ? optional required 10 k ?
AM79C965A 37 table 14. cll value and floating address pins bclk bus clock input clock input that provides timing edges for all interface signals. this clock is used to drive the system bus inter- face and the internal buffer management unit. this clock is not used to drive the network functions. be0 ? be3 byte enable input/output these signals indicate which bytes on the data bus are active during read and write cycles. when be3 is active, the byte on d31 ? d24 is valid. be2 ? be0 active indicate valid data on pins d23 ? d16, d15 ? d8, d7 ? d0, respectively. the byte enable signals are outputs for bus master and inputs for bus slave operations. blast burst last output when the blast signal is asserted, then the next time that brdy or rdyrtn is asserted, the burst cycle is complete. boff backoff input boff is monitored as an input during bus master ac- cesses. when pcnet-32 controller is current local bus master, it will float all appropriate bus mastering signals within 1 clock period of the assertion of boff . when boff is de-asserted, pcnet-32 controller will restart any accesses that were suspended due to the assertion of boff and then will proceed with other scheduled accesses, if any. register access cannot be performed to the pcnet-32 device while boff is asserted. brdy burst ready input/output brdy functions as an input to the pcnet-32 controller during bus master cycles. when brdy is asserted dur- ing a master cycle, it indicates to the pcnet-32 controller that the target device is accepting burst transfers. it also serves the same function as rdyrtn does for non-burst accesses. that is, it indicates that the target device has accepted the data on a master write cycle, or that the target device has presented valid data onto the bus during master read cycles. if brdy and rdyrtn are sampled active in the same cycle, then rdyrtn takes precedence, causing the next transfer cycle to begin with a t1 cycle. brdy functions as an output during pcnet-32 controller slave cycles and is always driven inactive (high). brdy is floated if the pcnet-32 controller is not being accessed as the current slave device on the local bus. d/c data/control select input/output during slave accesses to the pcnet-32 controller, the d/c pin, along with m/io and w/r , indicates the type of cycle that is being performed. pcnet-32 controller will only respond to local bus accesses in which d/c is driven high by the local bus master. during pcnet-32 controller bus master accesses, the d/c pin is an output and will always be driven high. d/c is floated if the pcnet-32 controller is not the current master on the local bus. d0 ? d31 data bus input/output used to transfer data to and from the pcnet-32 control- ler to system resources via the local bus. d31 ? d0 are driven by the pcnet-32 controller when performing bus master writes and slave read operations. data on d31 ? d0 is latched by the pcnet-32 controller when performing bus master reads and slave write operations. the pcnet-32 controller will always follow am386dx byte lane conventions. this means that for word and byte accesses in which pcnet-32 controller drives the data bus (i.e. master write operations and slave read operations) the pcnet-32 controller will produce dupli- cates of the active bytes on the unused half of the 32- bit data bus. table 15 illustrates the cases in which duplicate bytes are created. cll value floated portion of address bus during ahold 00000 none 00001 a31 ? a2 00010 a31 ? a3 00011 reserved cll value 00100 a31 ? a4 00101 ? 00111 reserved cll values 01000 a31 ? a5 01001 ? 01111 reserved cll values 10000 a31 ? a6 10001 ? 11111 reserved cll values
38 AM79C965A table 15. byte duplication on data bus * note: byte duplication does not apply during a lbs16 access. see table 8. eads external address strobe output during master write accesses in which generate cache invalidation cycles mode has been selected, the eads pin will be asserted as part of the pcnet-32 controller cache invalidation cycle. cache invalidation cycles will occur as often as a new cache line is reached. the cache line size can be set with the cache line length bits of bcr18 (bits [15:11]). hlda bus hold acknowledge input pcnet-32 controller examines the hlda signal to determine when it has been granted ownership of the bus. hlda is active high. when hlda is asserted and hold is being asserted by the pcnet-32 controller, the pcnet-32 controller assumes ownership of the local bus. however, if the pcnet-32 controller is asserting hold because holdi is asserted (as in a daisy chain arbitration), then pcnet-32 controller will assert hldao and will not assume ownership of the local bus. note that it changes polarity when the vl mode is se- lected (see pin description of lgnt in vesa vl-bus interface section). hldao bus hold acknowledge out output this signal is multiplexed with the tck pin, and is avail- able only when the multi-interrupt mode has been se- lected with the jtagsel pin. an additional local bus master may daisy-chain its hlda signal through the pcnet-32 controller hldao pin. the pcnet-32 controller will deliver a hldao signal to the additional local bus master whenever the pcnet-32 controller receives a hlda from the cpu, but is not simultaneously requesting the bus internally. the second local bus master must connect its hold output to the holdi input of the pcnet-32 controller in order to complete the local bus daisy-chain arbitration control. when sleep is not asserted, daisy chain arbitration signals that pass through the pcnet-32 controller will experience a one-clock delay from input to output (i.e. holdi to hold and hlda to hldao). while sleep is asserted (either in snooze mode or coma mode), if the pcnet-32 controller is configured for a daisy chain (holdi and hldao signals have been selected with the jtagsel pin), then the system arbitration signal hlda will be passed directly to the daisy-chain signal hldao without experiencing a one- clock delay. however, some combinatorial delay will be introduced in this path. note that this pin changes polarity when vl mode has been selected (see pin description of lgnto in vesa vl-bus interface section). hold bus hold request output pcnet-32 controller asserts the hold pin as a signal that it wishes to become the local bus master. hold is active high. once asserted, hold remains active until hlda has become active, independent of subsequent assertion of sleep or setting of the stop bit or access to the s_reset port (offset 14h). note t hat this pin changes polarity when the vl mode is selected (see pin description of lreq in vesa vl- bus interface section). holdi bus hold request in input this signal is multiplexed with the tdo pin, and is available only when the multi-interrupt mode has been selected with the jtagsel pin. an additional local bus master may daisy-chain its bus hold request signal through the pcnet-32 controller holdi pin. the pcnet-32 controller will convey the holdi request to the cpu via the pcnet-32 controller hold output. the second local bus master must con- nect its hlda input to the hldao output of the pcnet-32 controller in order to complete the local bus daisy-chain arbitration control. when sleep is not asserted, daisy chain arbitration signals that pass through the pcnet-32 controller will be3 - be0 dat [31:24] dat [23:16] dat [15:8] dat [7:0] 1110 undef undef undef a 1101 undef undef a undef 1011 undef a undef copy a 0111 a undef copy a undef 1100 undef undef b a 1001 undef c b undef 0011* d c copy d copy c 1000 undef c b a 0001 d c b undef 0000 d c b a
AM79C965A 39 experience a one-clock delay from input to output (i.e. holdi to hold and hlda to hldao). while sleep is asserted (either in snooze mode or coma mode), if the pcnet-32 controller is configured for a daisy chain (holdi and hldao signals have been selected with the jtagsel pin), then the daisy- chain signal holdi will be passed directly to the system arbitration signal hold without experiencing a one-clock delay. however, some combinatorial delay will be introduced in this path. if multi-interrupt mode has been selected and the daisy-chain arbitration feature is not used, then the holdi input should be tied to vss through a resistor. note that this pin changes polarity when vl mode has been selected (see pin description of lreqi in vesa vl-bus interface section). intr1 ? intr4 interrupt request output an attention signal which indicates that one or more of the following status flags is set: babl, miss, merr, rint, idon, mfco, rcvcco, txstrt, or jab. each of these status flags has a mask bit which allows for suppression of intr assertion. these flags have the meaning shown in table 16. table 16. status flags note that there are four possible interrupt pins, depending upon the mode that has been selected with the jtagsel pin. only one interrupt pin may be used at one time. the active interrupt pin is selected by pro- gramming the interrupt select register (bcr21). the default setting of bcr121will select interrupt intr1 as the active interrupt. note that bcr21 is eeprom- programmable. inactive interrupt pins are floated. the polarity of the interrupt signal is determined by the intlevel bit of bcr2. the interrupt pins may be programmed for level-sensitive or edge-sensitive operation. pcnet-32 controller interrupt pins will be floated at h_reset and will remain floated until either the eeprom has been successfully read, or, following an eeprom read failure, a software relocatable mode sequence has been successfully executed. ldev local device output ldev is driven by the pcnet-32 controller when it recognizes an access to pcnet-32 controller i/o space. such recognition is dependent upon a valid sampled ads strobe plus valid m/io , d/c and a31 ? a5 values. m/io memory i/o select input/output during slave accesses to the pcnet-32 controller, the m/io pin, along with d/c and w/r , indicates the type of cycle that is being performed. pcnet-32 controller will only respond to local bus accesses in which m/io is sampled as a zero by the pcnet-32 controller. during pcnet-32 controller bus master accesses, the m/io pin is an output and will always be driven high. m/io is floated if the pcnet-32 controller is not the cur- rent master on the local bus. reset system reset input when reset is asserted high and the lb/vesa pin has been tied to vdd, then the pcnet-32 controller performs an internal system reset of the type h_reset (hardware_ reset). the reset pin must be held for a minimum of 30 bclk periods. while in the h_reset state, the pcnet-32 controller will float or de-assert all outputs. note that this pin changes polarity when vl mode has been selected (see pin description of reset in vesa vl-bus interface section). rdy ready output rdy functions as an output from the pcnet-32 control- ler during pcnet-32 controller slave cycles. during pcnet-32 controller slave read cycles, rdy is asserted to indicate that valid data has been presented on the data bus. during pcnet-32 controller slave write cycles, rdy is asserted to indicate that the data on the data bus has been internally latched. rdy is asserted for one bclk period. rdy is then driven high for one- half of one clock period before being released. rdy is floated if the pcnet-32 controller is not the cur- rent slave on the local bus. babl babble (csr0, bit 14) miss missed frame (csr0, bit 12) merr memory error (csr0, bit 11) rint receive interrupt (csr0, bit 10) idon initialization done (csr0, bit 8) mfco missed packet count overflow (csr4, bit 9) rcvcco receive collision count overflow (csr4, bit 5) txstrt transmit start (csr4, bit 3) jab jabber (csr4, bit 1)
40 AM79C965A in systems where both rdy and rdyrtn (or equiva- lent) signals are provided, rdy must not be tied to rdyrtn . most systems now provide for a local device ready input to the memory controller that is separate from the cpu ready signal. this second ready sig- nal is usually labeled as readyin . this signal should be connected to the pcnet-32 controller rdy signal. the cpu ready signal should be connected to the pcnet-32 controller rdyrtn pin. in systems where only one ready signal is provided, then rdy may be tied to rdyrtn . rdyrtn ready return input rdyrtn functions as an input to the pcnet-32 control ler. rdyrtn is used to terminate all master accesses performed by the pcnet-32 controller, except that linear burst transfers may also be terminated with the brdy signal. rdyrtn is used to terminate slave read accesses to pcnet-32 controller i/o space. when asserted during slave read accesses to pcnet-32 controller i/o space, rdyrtn indicates that the bus mastering device has seen the rdy that was generated by the pcnet-32 controller and has accepted the pcnet-32 controller slave read data. therefore, pcnet-32 controller will hold slave read data on the bus until it synchronously samples the rdyrtn input as active low. the pcnet-32 controller will not hold rdy valid asserted during this time. the duration of the rdy pulse generated by the pcnet-32 controller will always be a single bclk cycle. rdyrtn is ignored during slave write accesses to pcnet-32 controller i/o space. slave write accesses to pcnet-32 controller i/o space are considered termi- nated by the pcnet-32 controller at the end of the cycle during which the pcnet-32 controller issues an active rdy . in systems where both a rdy and rdyrtn (or equiva- lent) signals are provided, then rdy must not be tied to rdyrtn . most systems now provide for a local device ready input to the memory controller that is separate from the cpu ready signal. this second ready sig- nal is usually labeled as readyin . this signal should be connected to the pcnet-32 controller rdy signal. the cpu ready signal should be connected to the pcnet-32 controller rdyrtn pin. in systems where only one ready signal is provided, then the pcnet-32 controller rdy output may be tied to the pcnet-32 controller rdyrtn input. w/r write/read select input/output during slave accesses to the pcnet-32 controller, the w/r pin, along with d/c and m/io , indicates the type of cycle that is being performed. during pcnet-32 controller bus master accesses, the w/r pin is an output. w/r is floated if the pcnet-32 controller is not the current master on the local bus. board interface led1 led1 output this pin is shared with the eesk function. when operating as led1, the function and polarity on this pin are programmable through bcr5. the led1 output from the pcnet-32 controller is capable of sinking the necessary 12 ma of current to drive an led directly. the led1 pin is also used during eeprom auto- detection to determine whether or not an eeprom is present at the pcnet-32 controller microwire interface. at the trailing edge of reset, this pin is sampled to determine the value of the eedet bit in bcr19. a sampled high value means that an eeprom is present, and eedet will be set to one. a sampled low value means that an eeprom is not present, and eedet will be set to zero. see the ? eeprom auto- detection ? section for more details. if no led circuit is to be attached to this pin, then a pull- up or pull-down resistor must be attached instead, in order to resolve the eedet setting. led2 led2 output this pin is shared with the srdclk function. when operating as led2, the function and polarity on this pin are programmable through bcr6. the led2 output from the pcnet-32 controller is capable of sinking the necessary 12 ma of current to drive an led directly. this pin also selects address width for software relocatable mode. when this pin is high during software relocatable mode, then the device will be programmed to use 32 bits of addressing while snooping accesses on the bus during software relocatable mode. when this pin is low during software relocatable mode, then the device will be programmed to use 24 bits of addressing while snooping accesses on the bus during software relocatable mode. the upper 8 bits of address will be assumed to match during the snooping operation when led2 is low. the 24-bit addressing mode is intended for use in systems that employ the gpsi signals. for more information on the gpsi function see section general purpose serial interface. if no led circuit is to be attached to this pin, then a pull up or pull down resistor must be attached instead, in order to resolve the software relocatable mode ad- dress setting.
AM79C965A 41 ledpre3 ledpre3 output this pin is shared with the eedo function. when operating as ledpre3, the function and polarity on this pin are programmable through bcr7. this signal is labeled as led ? pre ? 3 because of the multi-function nature of this pin. if an led circuit were directly attached to this pin, it would create an iol requirement that could not be met by the serial eeprom that would also be attached to this pin. therefore, if this pin is to be used as an additional led output while an eeprom is used in the system, then buffering is required between the ledpre3 pin and the led circuit. if no eeprom is included in the system design, then the ledpre3 signal may be directly connected to an led without buffering. the ledpre3 output from the pcnet-32 controller is capable of sinking the necessary 12 ma of current to drive an led in this case. for more details regarding led connection, see the section on leds. lnkst link status output this pin provides 12 ma for driving an led. it indicates an active link connection on the 10base-t interface. the signal is programmable through bcr4. note that this pin is multiplexed with the eedi function. this pin remains active in snooze mode. shfbusy shift busy output the function of the shfbusy signal is to indicate when the last byte of the eeprom contents has been shifted out of the eeprom on the eedo signal line. this information is useful for external eeprom- programmable registers that do not use the microwire protocol, as is described herein: when the pcnet-32 controller is performing a serial read of the eeprom through the microwire interface, the shfbusy signal will be driven high. shfbusy can serve as a serial shift enable to allow the eeprom data to be serially shifted into an external device or series of devices. the shfbusy signal will remain actively driven high until the end of the eeprom read operation. if the eeprom checksum was verified, then the shfbusy signal will be driven low at the end of the eeprom read operation. if the eeprom checksum verification failed, then the shfbusy signal will remain high. this function effectively demarcates the end of a successful eeprom read operation and therefore is useful as a programmable-logic low-active output enable signal. for more details on external eeprom- programmable registers, see the eeprom microwire access section under hardware access . this pin can be controlled by the host system by writing to bcr19, bit 3 (ebusy). sleep sleep input when sleep input is asserted (active low), the pcnet-32 controller performs an internal system reset and then proceeds into a power savings mode. (the reset operation caused by sleep assertion will not af- fect bcr registers.) all outputs will be placed in their normal reset condition. during sleep mode, all pcnet-32 controller inputs will be ignored except for the sleep pin itself. de-assertion of sleep results in wake-up. the system must refrain from starting the network operations of the pcnet-32 controller for 0.5 seconds following the de-assertion of the sleep signal in order to allow internal analog circuits to stabilize. both bclk and xtal1 inputs must have valid clock signals present in order for the sleep command to take effect. if sleep is asserted while lreq /hold is asserted, then the pcnet-32 controller will perform an internal system reset and then wait for the assertion of lgnt / hlda. when lgnt /hlda is asserted, the lreq / hold signal will be de-asserted and then the pcnet- 32 controller will proceed to the power savings mode. note that the internal system reset will not cause the hold/lreq signal to be de-asserted. the sleep pin should not be asserted during power supply ramp-up. if it is desired that sleep be asserted at power up time, then the system must delay the assertion of sleep until three bclk cycles after the completion of a valid pin reset operation. xtal1 ? xtal2 crystal oscillator inputs input/output the crystal frequency determines the network data rate. the pcnet-32 controller supports the use of quartz crystals to generate a 20 mhz frequency compatible with the iso 8802-3 (ieee/ansi 802.3) network frequency tolerance and jitter specifications. see the section external crystal characteristics (in section manchester encoder/ decoder) for more detail. the network data rate is one-half of the crystal fre- quency. xtal1 may alternatively be driven using an external cmos level source, in which case xtal2 must be left unconnected. note that when the pcnet-32 controller is in coma mode, there is an internal 22 kw resistor from xtal1 to ground. if an external source drives xtal1, some power will be consumed driving this resistor. if xtal1 is driven low at this time power consumption will be minimized. in this case, xtal1 must remain active for at least 30 cycles after the assertion of sleep and de-assertion of hold.
42 AM79C965A microwire eeprom interface eesk eeprom serial clock output the eesk signal is used to access the external iso 8802-3 (ieee/ansi 802.3) address prom. this pin is designed to directly interface to a serial eeprom that uses the microwire interface protocol. eesk is con- nected to the microwire eeprom ? s clock pin. it is con- trolled by either the pcnet-32 controller directly during a read of the entire eeprom, or indirectly by the host system by writing to bcr19, bit 1. eesk can be used during programming of external eeprom-programmable registers that do not use the microwire protocol as follows: when the pcnet-32 controller is performing a serial read of the ieee address eeprom through the microwire interface, the shfbusy signal will serve as a serial shift enable to allow the eeprom data to be serially shifted into an external device or series of de- vices. this same signal can be used to gate the output of the programmed logic to avoid the problem of releasing intermediate values to the rest of the system board logic. the eesk signal can serve as the clock, and eedo will serve as the input data stream to the programmable shift register. eedo eeprom data out input the eedo signal is used to access the external iso 8802-3 (ieee/ansi 802.3) address prom. this pin is designed to directly interface to a serial eeprom that uses the microwire interface protocol. eedo is con- nected to the microwire eeprom ? s data output pin. it is controlled by the eeprom during reads. it may be read by the host system by reading bcr19, bit 0. eedo can be used during programming of external eeprom-programmable registers that do not use the microwire protocol as follows: when the pcnet-32 controller is performing a serial read of the ieee address eeprom through the microwire interface, the shfbusy signal will serve as a serial shift enable to allow the eeprom data to be serially shifted into an external device or series of de- vices. this same signal can be used to gate the output of the programmed logic to avoid the problem of releasing intermediate values to the rest of the system board logic. the eesk signal can serve as the clock, and eedo will serve as the input data stream to the programmable shift register. eecs eeprom chip select output the function of the eecs signal is to indicate to the microwire eeprom device that it is being accessed. the eecs signal is active high. it is controlled by either the pcnet-32 controller during a read of the entire eeprom, or indirectly by the host system by writing to bcr19, bit 2. eedi eeprom data in output the eedi signal is used to access the external iso 8802-3 (ieee/ansi 802.3) address prom. eedi functions as an output. this pin is designed to directly interface to a serial eeprom that uses the microwire interface protocol. eedi is connected to the microwire eeprom ? s data input pin. it is controlled by either the pcnet-32 controller during command portions of a read of the entire eeprom, or indirectly by the host system by writing to bcr19, bit 0. attachment unit interface c i collision in input a differential input pair signaling the pcnet-32 controller that a collision has been detected on the network media, indicated by the ci inputs being driven with a 10 mhz pattern of sufficient amplitude and pulse width to meet iso 8802-3 (ieee/ansi 802.3) standards. operates at pseudo ecl levels. di data in input a differential input pair to the pcnet-32 controller carrying manchester encoded data from the network. operates at pseudo ecl levels. do data out output a differential output pair from the pcnet-32 controller for transmitting manchester encoded data to the network. operates at pseudo ecl levels. twisted pair interface rxd 10base-t receive data input 10base-t port differential receivers. txd 10base-t transmit data output 10base-t port differential drivers. txp 10base-t pre-distortion control output these outputs provide transmit predistortion control in conjunction with the 10base-t port differential drivers.
AM79C965A 43 external address detection interface the eadi interface is enabled through bcr2, bit 3 (eadisel). ear external address reject low input an eadi input signal. the incoming frame will be checked against the internally active address detection mechanisms and the result of this check will be or ? d with the value on the ear pin. the ear pin is defined as reject . see the eadi section for details regarding the function and timing of this signal. note that this pin is multiplexed with the intr2 pin. sfbd start frame ? byte delimiter output start frame ? byte delimiter enable. eadi output signal. an initial rising edge on this signal indicates that a start of frame delimiter has been detected. the serial bit stream will follow on the srd signal, commencing with the destination address field. sfbd will go high for 4 bit times (400 ns) after detecting the second ? 1 ? in the sfd (start of frame delimiter) of a received frame. sfbd will subsequently toggle every 400 ns (1.25 mhz frequency) with each rising edge indicating the first bit of each subsequent byte of the received serial bit stream. sfbd will be inactive during frame transmission. note that this pin is multiplexed with the led1 pin. srd serial receive data output an eadi output signal. srd is the decoded nrz data from the network. this signal can be used for external address detection. note that when the 10base-t port is selected, transitions on srd will only occur during receive activity. when the aui port is selected, transi- tions on srd will occur during both transmit and re- ceive activity. note that this pin is multiplexed with the ledpre3 pin. srdclk serial receive data clock output an eadi output signal. serial receive data is synchro- nous with reference to srdclk. note that when the 10base-t port is selected, transitions on srdclk will only occur during receive activity. when the aui port is selected, transitions on srdclk will occur during both transmit and receive activity. note that this pin is multiplexed with the led2 pin. general purpose serial interface the gpsi interface is selected through the portsel bits of the mode register (csr15) and enabled through the tstshdw[1] bit (bcr18) or the gpsien bit (csr124). note that when gpsi test mode is invoked, slave ad- dress decoding must be restricted to the lower 24 bits of the address bus by setting the ioaw24 bit in bcr2 and by pulling led2 low during software reloactable mode. the upper 8 bits of the address bus will always be considered matched when examining incoming i/o addresses. during master accesses while in gpsi mode, the pcnet-32 controller will not drive the upper 8 bits of the address bus with address information. see the gpsi section for more detail. txdat transmit data input/output txdat is an output, providing the serial bit stream for transmission, including preamble, sfd data and fcs field, if applicable. note that the txdat pin is multiplexed with the a31 pin. txen transmit enable input/output txen is an output, providing an enable signal for trans- mission. data on the txdat pin is not valid unless the txen signal is high. note that the txen pin is multiplexed with the a30 pin. stdclk serial transmit data clock input stdclk is an input, providing a clock signal for mac activity, both transmit and receive. rising edges of the stdclk can be used to validate txdat output data. the stdclk pin is multiplexed with the a29 pin. note that this signal must meet the frequency stability requirement of the iso 8802-3 (ieee/ansi 802.3) specification for the crystal. clsn collision input/output clsn is an input, indicating to the core logic that a collision has occurred on the network. note that the clsn pin is multiplexed with the a28 pin. rxcrs receive carrier sense input/output rxcrs is an input. when this signal is high, it indi- cates to the core logic that the data on the rxdat input pin is valid.
44 AM79C965A note that the rxcrs pin is multiplexed with the a27 pin. srdclk serial receive data clock input/output srdclk is an input. rising edges of the srdclk sig- nal are used to sample the data on the rxdat input whenever the rxcrs input is high. note that the srdclk pin is multiplexed with the a26 pin. rxdat receive data input/output rxdat is an input. rising edges of the srdclk signal are used to sample the data on the rxdat input when- ever the rxcrs input is high. note that the rxdat pin is multiplexed with the a25 pin. ieee 1149.1 test access port interface tck test clock input the clock input for the boundary scan test mode opera- tion. tck can operate up to 10 mhz. if left unconnected this pin has a default value of high. tdi test data input input the test data input path to the pcnet-32 controller. if left unconnected, this pin has a default value of high. tdo test data output output the test data output path from the pcnet-32 controller. tdo is floated when the jtag port is inactive. tms test mode select input a serial input bit stream is used to define the specific boundary scan test to be executed. if left unconnected, this pin has a default value of high. power supply pins avdd analog power (4 pins) power there are four analog +5 v supply pins. special atten- tion should be paid to the printed circuit board layout to avoid excessive noise on these lines. refer to appendix b and the pcnet family technical manual (pid# 18216a) for details. avss analog ground (2 pins) power there are two analog ground pins. special attention should be paid to the printed circuit board layout to avoid excessive noise on these lines. refer to appendix b and to the pcnet family technical manual for details. dvdd digital power (3 pins) power there are 3 digital power supply pins. (dvdd1, dvdd2, and dvdd3) used by the internal circuitry. dvddclk digital power clock (1 pin) power this pin is used to supply power to the clock buffering circuitry. dvddo i/o buffer digital power (5 pins) power there are 5 digital power supply pins (dvdd01 ? dvdd05) used by input/output buffer drivers. dvss digital ground (4 pins) ground there are 4 digital ground pins (dvss1 ? dvss4) used by the internal digital circuitry. dvssclk digital ground clock (1 pin) ground this pin is used to supply a ground to the clock buffering circuitry. dvssn i/o buffer digital ground (15 pins) ground these 15 ground pins (dvssn1 ? dvssn15) are used by the input/output buffer drivers. dvsspad digital ground pad (1 pin) ground this pin is used by the input/output logic circuits.
AM79C965A 45 basic functions system bus interface function the pcnet-32 controller is designed to operate as a bus master during normal operations. some slave accesses to the pcnet-32 controller are required in normal operations as well. initialization of the pcnet-32 controller is achieved through a combination of bus slave accesses, bus master accesses and an optional read of a serial eeprom that is performed by the pcnet-32 controller. the eeprom read operation is performed through the microwire interface. the iso 8802-3 (ieee/ansi 802.3) ethernet address may reside within the serial eeprom. some pcnet-32 controller configuration registers may also be programmed by the eeprom read operation. the address prom, on-chip board-configuration registers, and the ethernet controller registers occupy 32 bytes of i/o space which can be located by modifying the i/o base address register. the default base address can be written to the eeprom. the pcnet-32 controller will automatically read the i/o base address from the eeprom after h_reset, or at any time that the software requests that the eeprom should be read. when no eeprom is attached to the serial microwire interface, the pcnet-32 controller detects the condition, and enters software relocatable mode. while in software relocatable mode, the pcnet-32 controller will not respond to any bus accesses, but will snoop the bus for accesses to i/o address 378h. when a successfully executed and uninterrupted sequence of write operations is seen at this location, the pcnet-32 controller will accept the next sequence of accesses as carrying i/o base address relocation and interrupt pin programming information. after this point, the pcnet-32 controller will begin to respond directly to accesses directed toward offsets from the newly loaded i/o base address. this scheme allows for jumperless relocatable i/o implementations. software interface the software interface to the pcnet-32 controller is di- vided into two parts. one part is the direct access to the i/o resources of the pcnet-32 controller. the pcnet-32 controller occupies 32 bytes of i/o space that must be- gin on a 32-byte block boundary. the i/o base address can be changed to any 32-bit quantity that begins on a 32-byte block boundary through the function of the software relocatable mode. it can also be changed to any 32-bit value that begins on a 32-byte block boundary through the automatic eeprom read operation that occurs immediately after the h_reset function has completed. this read operation automatically alters the i/o base address of the pcnet-32 controller. the 32-byte i/o space is used by the software to pro- gram the pcnet-32 controller operating mode, to enable and disable various features, to monitor operating status and to request particular functions to be executed by the pcnet-32 controller. the other portion of the software interface is the descriptor and buffer areas that are shared between the software and the pcnet-32 controller during normal network operations. the descriptor area boundaries are set by the software and do not change during normal network operations. there is one descriptor area for receive activity and there is a separate area for transmit activity. the descriptor space contains relocatable pointers to the network packet data and it is used to transfer packet status from the pcnet-32 controller to the software. the buffer areas are locations that hold packet data for transmission or that accept packet data that has been received. network interfaces the pcnet-32 controller can be connected to an 802.3 network via one of two network interfaces. the attach- ment unit interface (aui) provides an iso 8802-3 (ieee/ansi 802.3) compliant differential interface to a remote mau or an on-board transceiver. the 10base-t interface provides a twisted-pair ethernet port. while in auto-selection mode, the interface in use is determined by an auto-sensing mechanism which checks the link status on the 10base-t port. if there is no active link status, then the device assumes an aui connection. detailed functions bus interface unit the bus interface unit is built of several state machines that run synchronously to bclk. one bus interface unit state machine handles accesses where the pcnet-32 controller is the bus slave, and another handles ac- cesses where the pcnet-32 controller is the bus master. all inputs are synchronously sampled except ads , m/io , d/c , w/r and the a[31:5] bus when this bus is an input to the pcnet-32 controller. all outputs are synchronously generated on the rising edge of bclk with the following exceptions : ldev is generated asynchronously. rdy is driven/floated on falling edges of bclk, but will change state on rising edges of bclk.
46 AM79C965A the following sections describe the various bus master and bus slave operations that will be performed by the pcnet-32 controller. the timing diagrams that are in- cluded in these sections ( bus acquisition section through slave timing section) show the signals and timings of the am486 32-bit mode of operation. the sections from bus acquisition through linear burst dma transfers show bus master operations. the slave timing section shows bus slave operations. note that the pcnet-32 controller operation in am486 32-bit mode represents a merger of the requirements of the vesa vl-bus specification and am486 bus specification, whichever is more stringent. the concepts discussed in the following sections and the basic nature of the timings shown is applicable in a general sense to pcnet-32 controller operational modes. for specific differences in timing between modes and for examples of timing diagrams showing basic transfers in each of the modes, please consult the following sections: am486 32-bit mode: bus acquisition section through slave timing section vesa vl-bus mode: vesa vl-bus mode timing section for selection of each mode, consult the section on configuration pins in the pin description section. note that all timing diagrams in this document have been drawn showing reference to two groups of address pins: namely, a4 ? a31 and a2 ? a3, be0 ? be3 . in the ahold timing diagrams, the two groups are shown separately, because the upper address pins become floated, while the lower address pins do not. the point of division between the two groups of address pins will depend upon the value of cll in bcr18. in the case of linear burst operations, the upper address pins are shown separately because that group does not change its value through a single linear burst, while the lower address pins do change value. in this case, the point of division between the two groups of address pins will depend upon the value of linbc in bcr18. in all other timing diagrams, the two groups are shown separately just to maintain consistency with the ahold and linear burst timing diagrams. for more details, see the ahold and linear burst count sections. bus acquisition the pcnet-32 controller microcode (in the buffer man- agement section) will determine when a dma transfer should be initiated. the first step in any pcnet-32 con- troller bus master transfer is to acquire ownership of the bus. this task is handled by synchronous logic within the biu. bus ownership is requested with the hold signal and ownership is granted by the cpu (or an arbiter) through the hlda signal. the pcnet-32 controller additionally supplies holdi and hldao signals to allow daisy chaining of devices through the pcnet-32 controller. priority of the holdi input versus the pcnet-32 controller ? s own internal request for bus mastership can be set using the prpcnet bit of bcr17. simple bus arbitration (hold, hlda only) is shown in figure 1. note that assertion of the stop bit will not cause a de- assertion of the hold signal. note also that a read of the s_reset register (i/o resource at offset 14h from the pcnet-32 controller base i/o address) will not cause a de-assertion of the hold signal. either of these actions will cause the internal master state machine logic to cease operations, but the hold signal will remain active until the hlda signal is synchronously sampled as asserted. following either of the above actions, on the next clock cycle after the hlda signal is synchronously sampled as asserted, the pcnet-32 controller will de-assert the hold signal. no bus master accesses will have been performed during this brief bus ownership period.
AM79C965A 47 figure 1. bus acquisition assertion of a minimum-width pulse on the reset pin will cause the hold signal to de-assert within six clock cycles following the assertion of the reset pin. in this case, the pcnet-32 controller will not wait for the asser- tion of the hlda signal before de-asserting the hold signal. this description of behavior is identical for the vesa vl-bus mode of operation, except that the hold, hlda and reset signals are replaced by the inverted sense signals lreq , lgnt , and reset , respectively; the bclk, boff , eads , and rdy signals are replaced by lclk, wback , leads , and lrdy , respectively. bus master dma transfers there are three primary types of dma transfers. all dma transfers will have wait states inserted until either rdyrtn or brdy is asserted. figure 2 and figure 3 show the basic bus transfers of read and write without ready wait states and then with ready wait states. ads tt bclk t1 t2 t2 a4 ? a31, m/io, d/c a2 ? a3, be0 ? be3 rdyrtn w/r brdy blast d0 ? d31 hold hlda from pcnet-32 ti ti ti ti 18219- 5
48 AM79C965A figure 2. basic read cycles without and with wait states ads ti bclk t1 t2 t1 t2 t1 t2 a4 ? a31, m/io, d/c a2 ? a3, be0 be3 rdyrtn w/r brdy blast d0 d31 t2 t2 ti to pcnet-32 hold hlda to pcnet-32 to pcnet-32 ti ti 18219- 6
AM79C965A 49 figure 3. basic write cycles without and with wait states ads ti bclk t1 t2 t1 t2 t1 t2 a4 a31, m/io, d/c a2 a3, be0 be3 rdyrtn w/r brdy blast d0 d31 t2 t2 ti to pcnet-32 hold hlda to pcnet-32 to pcnet-32 ti ti 18219-7
50 AM79C965A effect of boff assertion of boff during bus master transfers will cause the pcnet-32 controller to float all of its bus sig- nals beginning at the next clock cycle. any access which has been interrupted by boff will be restarted when the boff signal is de-asserted. simultaneous assertion of rdyrtn (or brdy ) and boff is resolved in favor of boff . the rdyrtn (or brdy ) is ignored for such a cycle, and when boff is de-asserted, the cycle is restarted. see figure 4 for detail. figure 4. restarted read cycle ads ti bclk t1 t2 t2 tb tb t1b a4 ? a31, m/io, d/c a2 ? a3, be0 ? be3 rdyrtn w/r brdy blast d0 ? d31 t2 t2 ti to pcnet-32 boff hold to pcnet-32 hlda 100 100 100 100 ti ti 18219-8
AM79C965A 51 effect of ahold assertion of ahold during bus master transfers will cause the pcnet-32 controller to float some portion of the address bus beginning at the next clock cycle. if rdyrtn is returned while ahold is active, then the cycle completes, since the data bus may remain active during ahold. however, a new cycle will not be started while ahold is active. the portion of the address bus that will be floated at the time of an address hold operation will be determined by the value of the cache line length register (bcr18, bits 15-11). table 17 lists all of the legal values of cll showing the portion of the address bus that will become floated during an address hold operation. if the rdyrtn signal is not returned while ahold is active, then the pcnet-32 controller will resume driving the same address onto the address bus when ahold is released. the pcnet-32 controller will not reissue the ads signal at this time. see figure 5 and figure 6 for details. table 17. cll value and floating address pins note: the default value of cll after h_reset is 00100. all timing diagrams in this document are drawn with the assumption that this is the value of cll. cll value floated portion of address bus during ahold 00000 none 00001 a31 ? a2 00010 a31 ? a3 00011 reserved cll value 00100 a31 ? a4 00101 ? 00111 reserved cll values 01000 a31 ? a5 01001 ? 01111 reserved cll values 10000 a31 ? a6 10001 ? 11111 reserved cll values
52 AM79C965A figure 5. read cycle with ahold note that initial access is allowed to complete in spite of ahold, but next access is prevented from beginning until ahold is de-asserted. ads ti bclk t1 t2 t2 t2 ti ti a4 ? a31 a2 ? a3, be0 ? be3 rdyrtn w/r brdy blast d0 ? d31 t1 t2 ti to pcnet-32 ahold hold hlda 100 104 100 104 to pcnet-32 m/io, d/c ti ti 18218-9
AM79C965A 53 figure 6. read cycle with ahold address is re-driven when ahold is de-asserted, since rdyrtn had not yet arrived. effect of bus preemption if a bus preemption event occurs during a basic transfer cycle, then the behavior of the pcnet-32 controller will depend upon which specific type of access is being performed. the general response of the pcnet-32 controller is that the current operation will complete before the pcnet-32 controller relinquishes the bus in response to the preemption. ? current operation ? in this sense refers to the general pcnet-32 controller operation, such as ? descriptor access ? . note that a ? descriptor access ? consists of one or two basic transfers. therefore, both transfers of a descriptor access must be completed before the bus will be released in response to a preemption. see each of the sections for initialization block dma transfers, descriptor dma transfers, fifo dma transfers and linear burst transfers for more specific information. ads ti bclk t1 t2 t2 t2 t2 t2 a4 ? a31 a2 ? a3, be0 ? be3 rdyrtn w/r brdy blast d0 ? d31 t1 t2 ti to pcnet-32 ahold hold hlda 100 104 100 104 to pcnet-32 m/io , d/c 100 ti ti 18219-80
54 AM79C965A effect of lbs16 (vl-bus mode only) dynamic bus sizing is recognized by the pcnet-32 con- troller while operating in the vl-bus mode. the lbs16 signal is used to indicate to the pcnet-32 controller whether the vl-bus target is a 16-bit or 32-bit periph- eral. when the target device indicates that it is 16 bits in width by asserting the lbs16 signal at least one lclk period before asserting the rdyrtn signal, then the pcnet-32 controller will dynamically respond to the size constraints of the peripheral by performing additional accesses. table 18 shows the sequence of accesses that will be performed by the pcnet-32 controller in response to the assertion of lbs16 . figure 7 shows an example of an exchange between a 16-bit vl-bus peripheral and the pcnet-32 controller. note that the lbs16 signal is asserted during the lclk that precedes the assertion of rdyrtn . in this particu- lar case, in order to maintain zero-wait state accesses, the 16-bit target must generate lbs16 in a very short time in order to meet the required setup time of lbs16 into the pcnet-32 controller. if the peripheral were inca- pable of meeting the required setup time, then a wait state would be needed in order to insure that lbs16 is asserted at least one lclk prior to the assertion of the rdyrtn signal. when the assertion of lbs16 during a pcnet-32 con- troller master access has created the need for a second access as specified in the table above, and the wback signal becomes active during the second access, then, when wback is de-asserted, the pcnet-32 controller will repeat both accesses of the pair. table 18. data transfer sequence from 32-bit wide to 16-bit wide *nr = no second access required for these cases current access next with lbs16 be3 be2 be1 be0 be3 be2 be1 be0 1 1 1 0 nr* 1 1 0 0 nr* 10001 011 00000 011 1 1 0 1 nr* 10011 011 00010 011 1 0 1 1 nr* 0 0 1 1 nr* 0 1 1 1 nr*
AM79C965A 55 figure 7. vl-bus ready cycle with lbs16 asserted four-byte single cycle access is converted to two two-byte accesses. ads ti lclk t1 t2 t1 t2 ti ti adr4 ? adr31 adr2 adr3, be2 be3 rdyrtn w/r brdy blast dat0 dat31 ti ti ti to pcnet-32 lbs16 lreq lgnt 100 100 to pcnet-32 m/io, d/c 100 be0 be1 100 ti 18219-10
56 AM79C965A initialization block dma transfers during execution of the pcnet-32 controller bus master initialization procedure, the pcnet-32 controller microcode will repeatedly request dma transfers from the biu. during each of these initialization block dma transfers, the biu will perform two data transfer cycles (eight bytes) and then it will relinquish the bus (see fig- ure 8). the two transfers within the mastership period will always be read cycles to ascending contiguous ad- dresses. the two transfers in each initialization block dma transfer will never be executed using linear burst mode. in 32-bit software mode, the number of bus mas- tership periods needed to complete the initialization procedure is 4. there are 7 double-words to transfer during the bus master initialization procedure, so four bus mastership periods are needed in order to complete the initialization sequence. note that the last double-word transfer of the last bus mastership period of the initialization sequence accesses an unneeded location. data from this transfer is discarded internally. if a bus preemption event occurs during an initialization block dma transfer, then the pcnet-32 controller will complete both of the two data transfer cycles of the in- itialization block dma transfer before releasing the hold signal and relinquishing the bus. when ssize32 = 0 (csr58[8]/bcr20[8]), then the number of bus mastership periods needed to complete the initialization procedure is 3 or 4. figure 8. initialization dma transfer ads ti bclk t1 t2 t1 t2 ti ti a4 a31, m/io, d/c a2 a3, be0 be3 rdyrtn w/r brdy blast d0 d31 ti ti ti ti to pcnet-32 to pcnet-32 iadd i iadd i +4 iadd i iadd i +4 18219-11
AM79C965A 57 descriptor dma transfers pcnet-32 controller will determine when a descriptor access is required. a descriptor dma read will consist of two double-word transfers. a descriptor dma write will consist of one or two double word transfer. the transfers within a descriptor dma transfer mastership period will always be of the same type (either all read or all write). the transfers will be to addresses in the order as specified in table 19 and table 20 (note that md indicates tmd or rmd). if buffer chaining is used (see transmit and receive descriptor table entry sections), writes to the descriptors that do not contain the end of packet bit will consist of only one double-word. this write will be to the same location as the second of the two writes performed when the end of frame has been processed (i.e. to the location that contains the descriptor ownership bit, md1[31]). descriptor dma transfers will never be executed using linear burst mode. during read accesses, the byte enable signals will indicate that all byte lanes are active. should some of the bytes not be needed, then the pcnet-32 controller will internally discard the extraneous information that was gathered during such a read. during write accesses, only the bytes which need to be written are enabled, by activating the corresponding byte enable pins. see figure 9 and figure 10. if a bus preemption event occurs during a descriptor dma transfer, then the pcnet-32 controller will com- plete both of the two data transfer cycles of the descrip- tor dma transfer, before releasing the hold signal and relinquishing the bus. the only significant differences between descriptor dma transfers and initialization dma transfers are that the addresses of the accesses follow different ordering. table 19. bus master reads of descriptors table 20. bus master writes of descriptors * address values for a[31:8] are constant throughout any single descriptor dma transfer. note that even though bits a{1:0] do not physically exist in the system, these bits must be set to zero in the descriptor base address. 16-bit software mode 32-bit software mode address sequencea[7:0] lance item accessed pcnet-32 item accessed address sequencea[7:0]* lance item accessed pcnet-32 item accessed 00 md1[15:0], md0[15:0] md1[31:24], md0[23:0] 04 md1[15:8], md2[15:0] md1[31:0] 04 md3[15:0], md2[15:0] md2[15:0], md1[15:0] 00 md1[7:0], md0[15:0] md0[31:0] bus break bus break 16-bit software mode 32-bit software mode address sequencea[7:0] lance item accessed pcnet-32 item accessed address sequencea[7:0]* lance item accessed pcnet-32 item accessed 04 md3[15:0], md2[15:0] md2[15:0], md1[15:0] 08 md3[15:0], md2[15:0] md2[31:0] 00 md1[15:0], md0[15:0] md1[31:24], md0[23:0] 04 md1[15:8], md2[15:0] md1[31:0] bus break bus break
58 AM79C965A figure 9. descriptor dma read ads ti bclk t1 t2 t1 t2 ti ti a4 a31, m/io, d/c a2 a3, be0 be3 rdyrtn w/r brdy blast d0 d31 ti ti ti ti to pcnet-32 to pcnet-32 md1* md0* md1* md0* 18219-1 2 *note that message descriptor addresses 1 and 0 are in descending order.
AM79C965A 59 figure 10. descriptor dma write fifo dma transfers pcnet-32 controller microcode will determine when a fifo dma transfer is required. this transfer mode will be used for transfers of data to and from the pcnet-32 controller fifos. once the pcnet-32 controller biu has been granted bus mastership, it will perform a series of consecutive transfer cycles before relinquishing the bus. each transfer will be performed sequentially, with the issue of an address, and the transfer of the corresponding data with appropriate output signals to indicate selection of the active data bytes during the transfer. all transfers within the master cycle will be either read or write cycles, and all transfers will be to contiguous, ascending addresses. the number of data transfer cycles contained within a single bus cycle is in general, dependent on the programming of the dmaplus option (csr4, bit 14). several other factors will also affect the length of the bus cycle period. the possibilities are as follows: if dmaplus = 0, a maximum of 16 transfers will be performed by default. this default value may be changed by writing to the burst register (csr80). note that dmaplus = 0 merely sets a maximum value. the minimum number of transfers in the bus cycle will be determined by all of the following variables: the settings of the fifo watermarks, the particular conditions existing within the fifos, receive and transmit status conditions, the value of the dma burst cycle (csr80), the value of the dma bus activity timer (csr82), and the timing of any occurrence of preemption that takes place during the fifo dma transfer. if dmaplus = 1, the bus cycle will continue until the transmit fifo is filled to its high threshold (read trans- fers) or the receive fifo is emptied to its low threshold (write transfers), or until the dma bus activity timer value (csr82) has expired. other variables may also affect the end point of the burst in this mode. among those variables are: the particular conditions existing within the fifos, receive and transmit status conditions, and bus preemption events. the fifo thresholds are programmable (see descrip- tion of csr80), as are the burst cycle and bus activity timer values. the exact number of transfer cycles in the case of dmaplus = 1 will be dependent on the latency of the system bus to the pcnet-32 controller ? s mastership request and the speed of bus operation, but ads ti bclk t1 t2 t1 t2 ti ti a4 a31, m/io, d/c a2 a3, be0 be3 rdyrtn w/r brdy blast d0 d31 ti ti ti ti from pcnet-32 from pcnet-32 md2* md2* md1* md1* *note that message descriptor addresses 2 and 1 are in descending order. 18219-13
60 AM79C965A will be limited by the value in the bus activity timer register, the fifo condition, receive and transmit status, and by preemption events, if any. barring a time- out by either of these registers, or a bus preemption by another mastering device, or exceptional receive and transmit events, or an end of packet signal from the fifo, the fifo watermark settings and the extent of bus acknowledge latency will be the major factors determining the number of accesses performed during any given arbitration cycle when dmaplus = 1. the ready response of the memory device will also affect the number of transfers when dmaplus = 1, since the speed of the accesses will affect the state of the fifo. (during accesses, the fifo may be filling or emptying on the network end. a slower memory re- sponse will allow additional data to accumulate inside of the fifo (during write transfers from the receive fifo). if the accesses are slow enough, a complete double word may become available before the end of the arbitration cycle and thereby increase the number of transfers in that cycle.) the general rule is that the longer the bus grant latency or the slower the bus transfer operations (or clock speed) or the higher the transmit watermark or the lower the receive watermark or any combination thereof the longer will be the average burst length. if a bus preemption event occurs during a fifo dma transfer, then the pcnet-32 controller will complete the current transfer and it will complete a maximum of four additional data transfer cycles before releasing the hold signal and relinquishing the bus. figure 11. fifo dma read ads ti bclk t1 t2 t1 t2 t1 t2 a4 a31, m/io, d/c a2 a3, be0 be3 rdyrtn w/r brdy blast d0 d31 t1 t2 t1 t2 ti to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 18219-14
AM79C965A 61 figure 12. fifo dma write note that a[1:0] do not exist in a 32-bit system, but both of these bits do exist in the buffer pointers that are passed to the pcnet-32 controller in the descriptor. a[1:0] values will be decoded and presented on the bus as byte enable (be0 -be3 ) values during fifo dma transfers. linear burst dma transfers once the pcnet-32 controller has been granted bus mastership, the pcnet-32 controller may request to perform linear burst cycles by de-asserting the blast signal. if the device being accessed wishes to support linear bursting, then it must assert brdy and de-assert rdyrtn , with the same timing that rdyrtn would normally be provided. linear bursting is only performed by the pcnet-32 controller if the breade and/or bwrite bits of bcr18 are set. these bits individually enable/disable the ability of the pcnet-32 controller to perform linear burst accesses during master read op- erations and master write operations, respectively. only fifo data transfers will make use of the linear burst mode. the first transfer in the linear burst will consist of both an address and a data cycle, but subsequent transfers will contain data only, until the linbc upper limit of transfers have been executed. linbc is a value from the bcr18 register. the linear burst ? upper limit ? is created by taking the bcr18 linbc[2:0] value and multiplying by 4. the result is the number of transfers that will be performed within a single linear burst sequence. the entire address bus will still be driven with appropri- ate values during the data cycles. when the linbc upper limit of data transfers have been performed, a new ads may be asserted (if there is more data to be transferred), with a new address on the a2 ? a31 pins. following the new ads cycle, the linear bursting of data will resume. ownership of the bus will be maintained until other variables cause the pcnet-32 controller to relinquish the bus. these variables have been discussed in the fifo dma transfers section above. they will be reviewed again within this section of the document. ads ti bclk t1 t2 t1 t2 t1 t2 a4 a31, m/io, d/c a2 a3, be0 be3 rdyrtn w/r brdy blast d0 d31 t1 t2 t1 t2 ti from pcnet-32 from pcnet-32 from pcnet-32 from pcnet-32 from pcnet-32 18219-15
62 AM79C965A transfers within a linear burst cycle will either be all read or all write cycles, and will always be to contiguous ascending addresses. linear bursting of read and write operations can be individually enabled or disabled through the breade and bwrite bits of bcr18 (bits 6 and 5). linear burst dma transfers should be considered as a superset of the fifo dma transfers. linear burst dma transfers will only be used for data transfers to and from the pcnet-32 controller fifos and they will only be al- lowed when the burst enable bits of bcr18 have been set. linear read bursting and linear write bursting have individual enable bits in bcr18. any combination of linear burst enable bit settings is permissible. linear bursting is not allowed in systems that have bclk frequencies above 33 mhz. linear bursting is automatically disabled in vl-bus systems that operate above this frequency by connecting the vlben pin to either id(3) (for vl-bus version 1.0 systems) or id(4) and id(3) and id(1) and id (0 ) (for vl-bus version 1.1 or 2.0 systems). in am486-style systems that have bclk frequencies above 33 mhz, disabling the linear burst capability is ideally carried out through eeprom bit programming, since the eeprom programming can be setup for a particular machine ? s architecture. all byte lanes are always considered to be active during all linear burst transfers. the be3 ? be0 signals will reflect this fact. linear burst dma starting address restrictions a pcnet-32 controller linear burst will begin only when the address of the current transfer meets the following condition: a[31:0] mod (linbc x 16) = 0, the following table illustrates all possible starting ad- dress values for all legal linbc values. note that a[31:6] are don ? t care values for all addresses. also note that while a[1:0] do not physically exist within a 32 bit system, they are valid bits within the buffer pointer field of descriptor word 0. thus, where a[1:0] are listed, they refer to the lowest two bits of the descriptor ? s buffer pointer field. these bits will have an affect on determin- ing when a pcnet-32 controller linear burst operation may legally begin and they will affect the output values of the be3 ? be0 pins, therefore they have been included in table 21 as a[1:0]. it is not necessary for the software to insure that the buffer address pointer contained in descriptor word 0 matches the address restrictions given in the table. if the buffer pointer does not meet the conditions set forth in the table, then the pcnet-32 controller will simply postpone the start of linear bursting until enough ordinary fifo dma transfers have been performed to bring the current working buffer pointer value to a valid linear burst starting address. this operation is referred to as ? aligning ? the buffer address to a valid linear burst starting address. once this has been done, the pcnet-32 controller will recognize that the address for the current access is a valid linear burst starting address, and it will automatically begin to perform linear burst accesses at that time, provided of course that the software has enabled the linear burst mode. note that if the software would provide only valid linear burst starting addresses in the buffer pointer, then the pcnet-32 controller could avoid performing the align- ment operation. it would begin linear burst accesses on the very first of the buffer transfers thereby allowing a slight gain in bus bandwidth efficiency. because of the linear burst starting address restrictions given in the table above, the pcnet-32 controller linear burst mode is completely compatible with the am486- style burst cycle when the linbc[2:0] bits have been programmed with the value of 001. table 21. linear burst addess linbc[2:0] lbs = linear burst size (no. of transfers) linear burst addresses beginning a[5:0] = (a[31:6] = don ? t care) 0 0 (no linear bursting) not applicable 1 4 00, 10, 20, 30 2 8 00, 20 416 00 3,5,6,7 reserved not applicable
AM79C965A 63 linear burst dma timing diagram explanatory note note that in all of the following timing diagrams for linear burst operations, a linbc[2:0] value of 001 has been assumed. this translates to a linear burst length of four transfers. when the linear burst size is four transfers, then a[31:4] are stable within a single linear burst sequence, while a[3:2] and be3 ? be0 will change to reflect the address of the current transfer. note that for larger values of linbc[2:0] which correspond to longer linear burst lengths, the range of address pins that is stable during each burst sequence is smaller. for example, if linbc[2:0] has the value of 010, then the linear burst length is eight double word transfers or 32 bytes of data. with this value of linbc, it takes five address bits to track the changing addresses through the burst. this means that only a[31:5] are stable during each linear burst sequence, while a[4:2] and be3 ? be0 will change to reflect the address of the current transfer. for linbc[2:0] = 100, only a[31:6] are stable during each linear burst sequence, while a[5:2] and be3 ? be0 will change to reflect the address of the current transfer, and so on. table 22 summarizes this information. table 22. stable address lines during linear burst values of linbc not shown in the table are not allowed. see the linbc section of bcr18 for more details. since all of the timing diagrams assume a linbc[2:0] value of 001, then a[31:4] are shown to be stable within each linear burst sequence, and a[3:2] and be3 ? be0 are shown as changing in order to reflect the address of the current transfer. linear burst dma address alignment linear bursting may begin during a bus mastership pe- riod which was initially performing only ordinary dma operations. (i.e. the value of blast is not restricted to zero for an entire bus mastership period if zero was the value of blast on the first access of a bus master- ship period.) a change from non-linear bursting to linear bursting will normally occur during linear burst dma address alignment operations. if the pcnet-32 controller is programmed for linear burst mode (i.e. breade and/or bwrite bits of bcr18 are set to one), and the pcnet-32 controller requests the bus, but the starting address of the first transaction does not meet the conditions as specified in the table above, then the pcnet-32 controller will perform burst-cycle accesses (i.e. it will provide an ads for each transfer) until it arrives at an address that does meet the conditions described in the table. at that time, and without releasing the bus, the pcnet-32 controller will invoke the linear burst mode. the simple external manifestation of this event is that the value of the blast signal will change to de-asserted (driven high) on the next t2 cycle, thereby indicating a willingness of the pcnet-32 controller to perform linear bursting. (note that burst-cycle accesses are performed with blast = 0.) figure 13 shows an example of a linear burst dma alignment operation being performed: linbc value portion of address bus stable during linear burst 000 linear bursting disabled 001 a[31:4] 010 a[31:5] 100 a[31:6]
64 AM79C965A figure 13. fifo dma read followed by linear burst read during a single bus mastership period linear burst dma blast signal timing linear burst cycles are requested by the pcnet-32 con- troller by de-asserting the blast signal (i.e. blast = 1). when blast is de-asserted by the pcnet-32 controller, the slave device is under no obligation to provide brdy . instead, it may provide rdyrtn in response to each of the pcnet-32 controller transfers. if rdyrtn is asserted during accesses in which the pcnet-32 controller has de-asserted blast , then the current transfer reverts to ordinary burst-cycle (see fifo dma transfer section). when blast is asserted, it signals the end of the cur- rent linear burst sequence. in a cycle in which blast is asserted and following the assertion of either rdyrtn and/or brdy by the slave device, the pcnet-32 controller may either relinquish the bus or it may initiate a new sequence of linear burst transfers without relinquishing the bus. if the pcnet-32 controller continues with a new sequence of linear burst transfers, the address asserted during the next t1 cycle will always be the next address in sequence from the previous t2 cycle. in other words, the pcnet-32 controller will never execute cycles within a single bus master-ship period that are not both ascending and contiguous, with the exception of the descriptor dma accesses described above. the decision to continue bus ownership will depend upon several variables, including the state of the receive or transmit fifo. all factors related to this decision are discussed later in this section. figure 14 illustrates a typical case of multiple linear burst sequences being performed during a single bus mastership period. ads t2 bclk t1 t2 t2 t2 t2 ti a4 a31, m/io, d/c a2 a3, be0 be3 rdyrtn w/r brdy blast d0 d31 hold hlda t1 t2 t1 ti to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 ti ti 18219-16
AM79C965A 65 figure 14. linear burst read ads t2 bclk t1 t2 t2 t2 t2 ti a4 a31, m/io, d/c a2 a3, be0 be3 rdyrtn w/r brdy blast d0 d31 hold hlda t2 t2 t2 t1 ti to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 ti 18219-1 7
66 AM79C965A figure 15. linear burst write with wait states added by the slave device on the third transfer linear burst dma ready wait states the pcnet-32 controller will insert wait states into linear burst dma cycles if neither rdyrtn nor brdy are sampled asserted at the end of each t2 cycle. interrupted linear burst dma cycles the assertion of rdyrtn in the place of brdy within a linear burst cycle will cause the linear burst to be ? interrupted. ? in that case, the pcnet-32 controller will revert to ordi- nary two-cycle transfers that contain both a t1 and a t2 cycle, except that blast will remain de-asserted to show that linear bursting is still being requested by the pcnet-32 controller. this situation is defined as an interrupted linear burst cycle. if brdy is sampled asserted (without also sampling rdyrtn asserted during the same access) during an interrupted linear burst cycle in which blast is de-asserted, then linear bursting will resume. (note that blast will become asserted during an interrupted linear burst cycle during the transfer that would have been the last transfer of the linear burst sequence, had the sequence not been interrupted.) when an interrupted linear burst cycle is resumed, then the next assertion of ads will depend upon the initial starting point of the linear burst, rather than on the re- sumption point. for example, if the linear burst length = 4 (linbc = 1), and brdy is asserted during the first transfer, but rdyrtn is asserted on the second, then the pcnet-32 controller will revert to ordinary dma transfers on the third transfer. if the responding device again asserts ads ti bclk t1 t2 t2 t2 t2 ti a4 a31, m/io, d/c a2 a3, be0 be3 rdyrtn w/r brdy blast d0 d31 ti t2 from pcnet-32 hold hlda from pcnet-32 from pcnet-32 from pcnet-32 t2 ti ti 18219-18
AM79C965A 67 brdy on the third access (while rdyrtn is de- asserted), the pcnet-32 controller will resume linear bursting from the current address. it will produce 1 more data cycle before asserting the next ads , i.e. pcnet-32 controller will keep track of the initial linear burst end point and will continue with the original linear burst after the rdyrtn interruption has occurred. figure 16 illustrates an example of an interrupted linear burst. note that blast is asserted in the fourth transfer after the initial linear burst began, even though the linear burst was interrupted with the assertion of rdyrtn and a new ads was driven for the third transfer. the external effect of the rdyrtn interruption is completely manifested in the insertion of the t1 cycle that contains the asserted ads . the linear burst cycle is not affected in any other way. partial linear burst certain factors may cause the pcnet-32 controller to linearly burst fewer than the linbc limit during a single linear burst sequence. blast will be asserted during the last data transfer. a linear burst that is terminated by blast before the linbc limit is reached is called a partial linear burst. a partial linear burst is recognizable in that the blast signal is asserted while fewer than the linbc limit of transfers has been performed in the current linear burst sequence. factors that could generate a partial linear burst include: no more data available for transfers from the current transmit buffer no more data available for transfer from the receive fifo for this packet no more space available for transfers to the current receive buffer if any of these conditions occurs, then the pcnet-32 controller will end the linear burst by asserting blast . typically, during the case of a master read operation (for transmit buffer transfers), the last transfer in the linear burst sequence will be the last transfer executed before the pcnet-32 controller releases the bus. this is true of both partial and completed linear burst sequences.
68 AM79C965A figure 16. ? interrupted ? linear burst write typically, during the case of a master write operation (for receive buffer transfers) when receive packet data has ended, the last transfer in the linear burst sequence will be the last transfer executed before the pcnet-32 controller releases the bus. this is true of both partial and completed linear burst sequences. however, if the next transfer that the pcnet-32 control- ler is scheduled to execute will be to the last available location of a receive or transmit buffer, then the pcnet-32 controller may assert blast on the current transfer and then use an ordinary cycle to make the last transfer to the buffer. this event occurs because of the restrictions placed upon the byte enable signals during the linear burst operation. as mentioned in the initial description of linear burst accesses (section linear burst dma transfers), all byte lanes of the data bus are always enabled during linear burst operations. note, however, that in the case of the last buffer location, the pcnet-32 controller may own only a portion of the double-word location. in such cases, it is necessary to discontinue linear burst accesses on the second from last buffer location so that an basic transfer with some byte lanes disabled can be used for the final transfer. figure 17 shows a partial linear burst that occurred while approaching the transfer of the last bytes of data to a receive buffer. the linear burst begins when 10 bytes of space still remain in the receive buffer. (the number of spaces remaining for the figure as drawn could be anywhere from 9 to 12 spaces. the value of 10 spaces has been chosen just for purposes of illustration.) after the first linear burst transfer, the pcnet-32 controller sees that between 6 bytes of space remain, and knowing that the second transfer will use another 4 bytes of space, the pcnet-32 controller is ads ti bclk t1 t2 t2 t1 t2 t1 a4 ? a31, m/io , d/c a2 ? a3, be0 ? be3 rdyrtn w/r brdy blast d0 ? d31 t2 t2 t2 from pcnet-32 hold hlda from pcnet-32 from pcnet-32 from pcnet-32 from pcnet-32 ti 18219-19
AM79C965A 69 able to predict that the third transfer will be the last. therefore, it asserts blast on the second transfer to terminate the linear burst operation. however, the pcnet-32 controller retains ownership of the bus so that it may, immediately thereon, make an basic transfer to the last two spaces in the buffer. figure 17. typical partial linear burst write, followed by a basic transfer during the same bus mastership period ads ti bclk t1 t2 t2 t1 ti ti a4 ? a31, m/io, d/c a2 ? a3, be0 ? be3 rdyrtn w/r brdy blast d0 ? d31 ti t2 from pcnet-32 hold hlda from pcnet-32 from pcnet-32 100 104 108 ti 18219-20
70 AM79C965A length of bus mastership period the number of data transfer cycles within the total bus mastership period is dependent on the programming of the dmaplus option (csr4, bit 14). the possibilities are as follows: if dmaplus = 0, a maximum of 16 transfers will be performed by default. this default value may be changed by writing to the burst register (csr80). note that dmaplus = 0 merely sets a maximum value. the minimum number of transfers in the burst will be determined by all of the following variables: the settings of the fifo watermarks and the conditions of the fifos, the value of the dma burst cycle (csr80), the value of the dma bus activity timer (csr82), and any occurrence of preemption that takes place during the burst. if dmaplus = 1, linear bursting will continue until the transmit fifo is filled to its high threshold or the receive fifo is emptied to its low threshold, or until the dma bus activity timer value (csr82) has expired. a bus preemption event is another cause of termination of cycles. the fifo thresholds are programmable (see description of csr80), as are the burst cycle and bus activity timer values. the exact number of total transfer cycles in the case of dmaplus = 1 will be dependent on the latency of the system bus to the pcnet-32 controller ? s mastership request and the speed of bus operation, but will be limited by the value in the bus activity timer register, the fifo condition and by preemption occurrences, if any. the exact response of the pcnet-32 controller to any of the conditions mentioned above can be complicated. for detail of the response to any particular stimulus, see each of the sections that describes pcnet-32 controller response. note that the number of transfer cycles between each ads assertion will always only be controlled by linbc, rdyrtn , boff , hlda and fifo conditions. the num- ber of transfer cycles separating ads assertions will not be affected by dmaplus or by the values in the burst cycle and bus activity timer register. however, these factors can influence the number of transfers that is performed during any given arbitration cycle. barring a time-out by the burst cycle or the bus activity timer register, or a bus preemption by another mastering device, the fifo watermark settings and the extent of bus acknowledge latency will be the major factors in determining the number of accesses performed during any given arbitration cycle. the brdy response time of the memory device will also affect the number of transfers, since the speed of the accesses will affect the state of the fifo. (during accesses, the fifo may be filling or emptying on the network end. for example, on a receive operation, a slower device will allow additional data to accumulate inside of the fifo. if the accesses are slow enough, a complete double word may become available before the end of the arbitration cycle and thereby increase the number of transfers in that cycle.) the general rule is that the longer the bus grant latency or the slower the bus transfer operations or the slower the clock speed or the higher the transmit watermark or the lower the receive watermark or any combination thereof, will produce longer total burst lengths. if a bus preemption event occurs after the execution of the first t2 cycle of the fourth from the last transfer cycle within a linear burst dma sequence, then the pcnet-32 controller will complete the current linear burst sequence and will execute a new linear burst sequence before releasing the hold signal and relinquishing the bus. if a bus preemption event occurs before or concurrent with the execution of the first t2 cycle of the fourth from the last transfer cycle within a linear burst dma sequence, then the pcnet-32 controller will complete the current linear burst sequence and then will release the hold signal and will relinquish the bus. within the context of this explanation, a single transfer cycle refers to the execution of a data transfer, regardless of the number of clock cycles taken, i.e. wait states are included in this definition of a transfer cycle. see figure 18.
AM79C965A 71 *note: hold will always go inactive for 2 blck cycles before being reasserted. figure 18. linear burst read with preemption during t2 ads bclk t1 t2 t2 t2 t2 ti a4 ? a31, m/io, d/c a2 ? a3, be0 ? be3 rdyrtn w/r brdy blast d0 ? d31 ti ti ti t1 hold hlda to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 * ti ti ti 18219-21
72 AM79C965A figure 19. linear burst read with preemption during one of the last three t2 cycles of the sequence if a bus preemption event occurs on a t1 cycle (specifi- cally, a t1 cycle in which the ads signal for a new linear burst sequence is asserted), then the next linear burst sequence will be executed before the pcnet-32 controller releases the hold signal and relinquishes the bus. (if the t1 cycle in which the preemption occurred was to begin an basic transfer, then the basic transfer plus as many as two additional basic transfers will be executed before relinquishing the bus.) ads bclk t1 t2 t2 t2 t2 t1 a4 ? a31, m/io, d/c a2 ? a3, be0 ? be3 rdyrtn w/r brdy blast d0 ? d31 t2 t2 t2 t2 ti hold hlda to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 ti t1 18219-22
AM79C965A 73 *note: hold is always held inactive for 2 blck cycles before being reasserted. figure 20. linear burst read with preemption that occurs during the t1 cycle ads t2 bclk t1 t2 t2 t2 t2 ti a4 a31, m/io, d/c a2 a3, be0 be3 rdyrtn w/r brdy blast d0 d31 ti ti hold hlda t2 t2 t2 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 * ti 18219-23
74 AM79C965A effect of b0ff assertion of boff during a linear burst has two possible outcomes. in the case of boff asserted before the first brdy (or rdyrtn ) has been sampled, the pcnet-32 controller will restart the linear burst after the boff event has ended. a new ads will be asserted with the original starting address for the halted linear burst. see figure 21. however, if the boff signal is asserted after the first brdy (or rdyrtn ) has been sampled, the pcnet-32 controller will revert to ordinary burst-cycle accesses following the boff event. in this case, the linear bursting will next occur when the memory address being accessed next meets the linear burst starting address requirements. if boff is sampled active on the same clock edge that brdy or rdyrtn is sampled active, then the boff takes priority. figure 21. restarted linear burst read in which boff was asserted before brdy of first transfer in linear burst sequency, hence linear burst sequence is restarted when boff is de-asserted. 18219-24 bclk ads a4-a31 m/io d/c w/r a2, a3 beo ? be3 rdyrtn brdy blast d0 ? d31 hold hlda boff t1 t1 t2 t2 tb tb t1b t2 t2 t2 t2 t1 100 100 104 108 10c 110 pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to
AM79C965A 75 figure 22. restarted linear burst read in which boff was asserted after brdy of first transfer in linear burst sequency. hence, linear burst reverts to ordinary cycles until next legal linear burst starting address is reached in general, if the linear burst is suspended by another bus master (either because of boff or pcnet-32 con- troller releasing hold) then any partially completed linear burst access will not resume when the pcnet-32 controller regains bus ownership. but if the pcnet-32 controller linear burst is interrupted by the receipt of rdyrtn in place of brdy , then the pcnet-32 control- ler will resume the linear burst operation as indicated by the blast signal. register accesses cannot be performed to the pcnet-32 device while boff is asserted. ads bclk t2 t2 t2 tb tb a4 a31, m/io, d/c a2 a3, be0 be3 rdyrtn w/r brdy blast d0 d31 t1b t2 t1 t2 t1 hold hlda boff 104 108 100 108 10c 110 to pcnet-32 to pcnet-32 to pcnet-32 t2 t2 114 to pcnet-32 to pcnet-32 18219-25
76 AM79C965A effect of ahold assertion of ahold during linear burst transfers will cause the pcnet-32 controller to float some portion of the address bus beginning at the next clock cycle. if brdy is returned while ahold is active, then the linear burst sequence will continue until the current burst would otherwise normally terminate, since the data bus and the lower portion of the address bus may remain active during ahold. however, a new linear burst sequence, requiring a new ads assertion, will not be started while ahold is active. when ahold is asserted during t1 of a linear burst, then the linear burst operation will be suspended until ahold is de-asserted. once ahold is de-asserted, then the pcnet-32 controller will start the suspended linear burst with the intended address. see figure 23. (note that the intended t1 of the linear burst sequence has been labeled ta in the figure, since a t1 was never executed due to the suspension of the address bus re- quired by the assertion of ahold.) when ahold is asserted in the middle of a linear burst, the linear burst may proceed without stalling or halting. ahold requires that pcnet-32 controller float a portion of its address bus, but linear burst data cycles will still proceed, since the ahold signal only affects a portion of the address bus, and that portion of the address bus is not being used for the middle accesses of a linear burst. however, if ahold is asserted in the middle of a linear burst operation, and the ahold signal is held long enough that a new linear burst sequence will start (a new ads is to be issued by the pcnet-32 controller) then at the end of the current linear sequence, the pcnet-32 controller must wait for the ahold signal to become inactive before beginning the next linear se- quence, since the ahold signal would now interfere with the pcnet-32 controller ? s wish to assert ads and a new address on the entire address bus. during the time that the pcnet-32 controller is waiting for the release of the ahold signal, the pcnet-32 controller will continue to drive the command signals, but ads will be driven inactive. note that if rdyrtn is asserted during a linear burst sequence while ahold is active, then no more access will be performed until ahold is de-asserted. this is because the assertion of rdyrtn will cause the pcnet-32 controller to insert a new t1 cycle into the lin- ear burst. a t1 cycle requires assertion of ads , but ads assertion is not allowed as long as ahold is still asserted. therefore, the t1 cycle is delayed until the ahold is de-asserted. the portion of the address bus that will be floated at the time of an address hold operation will be determined by the value of the cache line length register (bcr18, bits 15 ? 11). table 23 lists all of the legal values of cll showing the portion of the address bus that will become floated during an address hold operation. table 23. cll value of floated address in ahold note that the default value of cll after h_reset is 00100. all timing diagrams in this document are drawn with the assumption that this is the value of cll. cll value floated portion of address bus during ahold 00000 none 00001 a31 ? a2 00010 a31 ? a3 00011 reserved cll value 00100 a31 ? a4 00101 ? 00111 reserved cll values 01000 a31 ? a5 01001 ? 01111 reserved cll values 10000 a31 ? a6 10001 ? 11111 reserved cll values
AM79C965A 77 figure 23. linear burst read in which ahold was asserted during t1 in the linear burst sequence; linear burst sequence is started when ahold is de-asserted 18219-26 100 t1 t1 t1 ta ta ta t1 t2 t2 t2 t2 t1 104 108 10c 110 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 blck ads a4?a31 m/io, d/c w/r a2?a3, beo ?be3 rdyrtn brdy blast d0?d31 hold hlda ahold valid
78 AM79C965A figure 24. linear burst read cycle with ahold note that linear burst sequence is allowed to complete in spite of ahold, but next linear burst sequence is prevented from beginning until ahold is de-asserted. note that if the brdy (or rdyrtn ) signal is not re- turned while ahold is active, then the pcnet-32 con- troller will resume driving the same address onto the address bus when ahold is released. the pcnet-32 controller will not reissue the ads signal at this time. bus activity timer register time out during linear burst when the bus activity timer register (csr82 bits [15:0]) times out before or concurrent with the execution of the first t2 cycle of the fourth from the last transfer cycle within a linear burst dma sequence, then the linear burst will continue until a legal starting ads ti bclk t1 t2 t2 t2 t2 th a4 ? a31 a2 ? a3, be0 ? be3 rdyrtn w/r brdy blast d0 ? d31 th t1 t2 t2 ahold hold hlda 100 110 100 m/io, d/c to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 104 108 10c 114 110 ti 18219-27
AM79C965A 79 address is reached, and then the pcnet-32 controller will relinquish the bus. if the bus activity timer register times out after the execution of the first t2 cycle of the fourth from the last transfer cycle within a linear burst dma sequence, then the pcnet-32 controller will complete the current linear burst sequence and will execute a new linear burst sequence before releasing the hold signal and relinquishing the bus. (effectively, the bus activity timer time-out is treated in a manner identical to the occurrence of a preemption event.) therefore, when programmed for linear burst mode, the pcnet-32 controller bus mastership time may exceed the bus activity timer limit. this is done because an immediate abort of the linear burst due to timer expiration would leave the current buffer pointer at an unaligned location. this would cause an address alignment of several ordinary cycles to be executed during the next fifo dma operation. repeated occurrences of this nature would compromise the usefulness of the linear burst mode, since this would increase the number of non-linear burst cycles that are performed. this in turn would increase the bus bandwidth requirement of the pcnet-32 controller. therefore, because the pcnet-32 controller linear burst operation does not strictly obey the burst timer, the user should program the burst timer value in such a manner as to include the expected linear burst release time. if the user has enabled the linear burst function, and wishes the pcnet-32 controller to limit bus activity to max_time ms, then the burst timer should be programmed to a value of: max_time- [((3+lbs) x w + 10 + lbs) x (bclk period)] this is because the pcnet-32 controller may use as much as one ? linear burst size ? plus three transfers in order to complete the linear burst before releasing the bus. as an example, if the linear burst size is 4 transfers, and the number of wait states for the system memory is 2, and the bclk period is 30 ns and the max time allowed on the bus is 3 ms, then the burst timer should be programmed for: max_time- [((3+lbs) x w + 10 + lbs) x (bclk period)]; 3 ms ? [(3 + 4) x 2 +10 + 4) x (30 ns)] = 3 ms ? (28 x 30 ns) = 3 ? 0.84 ms = 2.16 ms. then, if the pcnet-32 controller ? s burst timer times out after 2.16 ms when the pcnet-32 controller has com- pleted all but the last three transfers of a linear burst, then the pcnet-32 controller may take as much as 0.84 ms to complete the bursts and release the bus. the bus release will occur at 2.16 + 0.84 = 3 ms. burst cycle time out during linear burst when the burst cycle (csr80 bits [7:0]) times out in the middle of a linear burst, the linear burst will continue until a legal starting address is reached, and then the pcnet-32 controller will relinquish the bus. the discussion for the burst cycle is identical to the discussion for the bus activity timer register, except that the quantities are in terms of transfers instead of in terms of time. the equation for the proper burst register setting is: burst count setting = (desired_max div (length of linear burst in transfers)) x length of linear burst in transfers, where div is the operation that yields the integer portion of the 3 operation. illegal combinations of watermark and linbc certain combinations of watermark programming and linbc programming may create situations where no linear bursting is possible, or where the fifo may be excessively read or excessively written. such combina- tions are declared as illegal. combinations of watermark settings and linbc set- tings must obey the following relationship: watermark (in bytes) ? linbc (in bytes) combinations of watermark and linbc settings that violate this rule may cause unexpected behavior. slave timing slave timing in the pcnet-32 controller is designed to perform to both am486 32-bit timing requirements and vesa vl-bus timing requirements at the same time. since the vesa vl-bus is based upon am486 bus tim- ing, there is really little difference evident, except for hold-off requirements on the part of the slave driving the rdy , brdy , and data signals when the high speed write signal is false. vesa vl-bus requires that none of these signals are driven by the slave until the second t2 cycle when the high speed write signal is false. since the pcnet-32 controller does not examine the high-speed write bit, it assumes that this signal is never true, and therefore always obeys the more stringent requirement of not being allowed to drive rdy , brdy and the data bus until the second t2. in addition, the pcnet-32 controller will drive rdy and brdy inactive for one half bclk cycle at the end of the slave access, immediately following the bclk cycle in which the pcnet-32 controller asserted rdy . again, this behavior is required by the vesa vl-bus specification, but it is not required for operation within an am486 system. the pcnet-32 controller performs in this manner, regardless of the pcnet-32 controller mode setting. slave timing can generally be inferred from the bus master timing diagrams, with the exception of the following information:
80 AM79C965A pcnet-32 controller never responds with brdy active during slave accesses. all pcnet-32 controller slave responses use only the rdy signal. brdy will always be de-asserted during all pcnet-32 controller slave ac- cesses. rdy is a pcnet-32 controller output signal. it is used during pcnet-32 controller slave accesses. rdyrtn is a pcnet-32 controller input signal. it is used during all pcnet-32 controller bus master accesses, as well as during pcnet-32 controller slave read accesses. the typical number of wait states added to a slave ac- cess on the part of the pcnet-32 controller is 6 or 7 bclk cycles, depending upon the relative phases of the internal buffer management unit clock and the bclk signal, since the internal buffer management unit clock is a divide-by-two version of the bclk signal. the pcnet-32 controller rdy and rdyrtn signals may be wired together. this allows the pcnet-32 controller to operate within a system that has a single ready signal. the ldev signal is generated in response to a valid pcnet-32 controller i/o address on the bus together with a valid ads signal. ldev is generated in an asyn- chronous manner by the pcnet-32 controller. see the parameter listings for delay values of the ldev signal. rdy , brdy and d[31:0] are never driven until the sec- ond t2 state of a slave access. before that time, it is expected that a system pull-up device is holding the rdy and brdy signals in a de-asserted state. the rdy and brdy signals are always driven high for one half bclk cycle immediately following the bclk period during which rdy was driven asserted. then the rdy and brdy signals are floated. this behavior is performed regardless of the pcnet-32 controller mode setting. see figure 25. figure 25. slave rdy timing vesa vl-bus mode timing vesa vl-bus mode functional timing is essentially identical to the timing of the am486 32-bit mode, except that the bus request and bus acknowledge signals have inverted senses from those shown in the previous timing diagrams and the ahold signal does not exist while the pcnet-32 controller is programmed ads ti bclk t1 t2 t2 t2 t2 t2 address, be0 ? be3 , m/io , d/c rdy w/r brdy d0 ? d31 t2 t2 t2x ti from pcnet-32 ldev valid not valid not valid rdyrtn 18219-28
AM79C965A 81 for vl-bus mode. in addition, dynamic bus sizing is supported in vesa vl-bus mode, through the use of the lbs16 signal. the following section describes possible lbs16 interactions while programmed for the vesa vl-bus mode of operation. other differences exist between vl-bus mode and am486 mode, but these other differences are not directly related to the master or slave cycle timings. effect of lbs16 (vl-bus mode only) dynamic bus sizing is recognized by the pcnet-32 con- troller while operating in the vl-bus mode. the lbs16 signal is used to indicate to the pcnet-32 controller whether the vl-bus target is a 16-bit or 32-bit periph- eral. when the target device indicates that it is 16 bits in width by asserting the lbs16 signal at least one lclk period before asserting the brdy signal, then the pcnet-32 controller will dynamically respond to the size constraints of the peripheral by performing additional accesses. table 24 indicates the sequence of accesses that will be performed by the pcnet-32 controller in response to the assertion of lbs16 . table 24. data transfer sequence from 32-bit wide to 16-bit wide *nr = no second access required for these cases. current access next with lbs16 be3 be2 be1 be0 be3 be2 be1 be0 1 1 1 0 nr* 1 1 0 0 nr* 10001011 00000011 1 1 0 1 nr* 10011011 00010011 1 0 1 1 nr* 0 0 1 1 nr* 0 1 1 1 nr*
82 AM79C965A figure 26 shows an example of an exchange between a 16-bit vl-bus peripheral and the pcnet-32 controller during ordinary read cycles while programmed for vl- bus mode of operation. note that the lbs16 signal is asserted during the lclk that precedes the assertion of rdyrtn . in this particular case, in order to maintain zero-wait state accesses, the 16-bit target must gener- ate lbs16 in a very short time in order to meet the re- quired setup time of lbs16 into the pcnet-32 controller. if the peripheral were incapable of meeting the required setup time, then a wait state would be needed in order to insure that lbs16 is asserted at least one lclk prior to the assertion of the rdyrtn signal. this situation is illustrated in the second double word access of the diagram. the wait state only needs to be inserted on the first access of the sequence, since from that point on, lbs16 could be held active low until the entire double word transfer had completed, thus adequately satisfying the lbs16 setup requirement for the second rdyrtn assertion. note that only two bytes of data are transferred during each t2 cycle so that the total number of bytes transferred during each access is four. figure 26. vl-bus basic read with lbs16 figure 27 shows an example of an exchange between a 16-bit vl-bus peripheral and the pcnet-32 controller during linear burst mode while programmed for vl-bus mode of operation. note that the lbs16 signal is as- ads t2 lclk t2 t2 ti ti adr4 adr31, m/io, d/c adr2 adr3, be2 be3 rdyrtn w/r brdy blast dat0 dat31 lreq lgnt t1 t2 t2 t1 ti to pcnet-32 to pcnet-32 to pcnet-32 be0 be1 lbs16 100 to pcnet-32 100 104 ti 104 104 18219-29
AM79C965A 83 serted during the lclk that precedes the assertion of brdy . in this particular case, in order to maintain zero- wait state accesses, the 16-bit target must generate lbs16 in a very short time in order to meet the required setup time of lbs16 into the pcnet-32 controller. if the peripheral were incapable of meeting the required setup time, then a wait state would be needed in order to insure that lbs16 is asserted at least one lclk prior to the assertion of the brdy signal. for linear burst sequences, this wait state would only need to be inserted on the first access of the sequence, since from that point on, lbs16 could be held active low until the entire sequence had completed, thus adequately satisfying the lbs16 setup requirement for each subsequent brdy assertion. note that only 2 bytes of data are transferred during each t2 cycle so that the total number of bytes transferred during the linear burst sequence is 16, even though 8 t2 cycles are executed. when the assertion of lbs16 during a pcnet-32 con- troller master access has created the need for a second access as specified in the table above, and the wback signal becomes active during the second access, then when wback is de-asserted, the pcnet-32 controller will repeat both accesses of the pair. figure 27. vl-bus linear burst read with lbs16 ads t2 lclk t2 t2 t2 t2 ti adr4 ? adr31, m/io, d/c adr2 ? adr3, be2 ? be3 rdyrtn w/r brdy blast dat0 ? dat31 lreq lgnt t2 t2 t2 t1 ti to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 to pcnet-32 be0 ? be1 lbs16 100 to pcnet-32 100 100 104 108 10c ti ti 18219-30
84 AM79C965A bus master and bus slave data byte placement the general rule of data placement is that the active data byte lanes are indicated by the byte enable signals for all transfers. note that during all master read operations, the pcnet-32 controller will always activate all byte enables, even though some byte lanes may not contain ? valid ? data as indicated by a buffer pointer value. in such instances, the pcnet-32 controller will internally discard unneeded bytes. note that in all 32-bit environments, regardless of the mode settings, the placement of data bytes on the data bus during all pcnet-32 controller bus operations (master and slave) will proceed in accordance with the data byte duplication rules of the am386dx. the am386dx requirement is for duplication of active data bytes in corresponding lower-half byte lanes when the access is a byte or word access that utilizes the upper half of the data bus. pcnet-32 controller performs data byte duplication in this manner. the am386dx does not indicate byte duplication when the active data bytes of a byte or word access are exclusively contained in the lower half of the data bus, therefore, the pcnet-32 controller will not perform data byte duplication in this case. byte duplication for bus master writes and bus slave reads will follow table 25. a[1:0] in the table refer to software pointers, since a[1:0] pins do not physically exist in the system. (software pointers include i/o address software pointers in the driver code for i/o accesses to the pcnet-32 controller, or software pointers for the initialization block, descriptor areas or buffer areas that are used by the pcnet-32 controller during master accesses.) for master read operations, the pcnet-32 controller expects data according to the byte enable signaling only. byte lanes with inactive byte enables are expected to carry invalid data. for slave write operations, the pcnet-32 controller ex- pects data according to the byte enable signaling only. byte lanes with inactive byte enables are expected to carry invalid data. for master write operations, the pcnet-32 controller will produce data as indicated in table 25. for slave read operations, the pcnet-32 controller will produce data as indicated for the bswp = 0 cases in table 25, regardless of the actual setting of the bswp bit .
AM79C965A 85 table 25. master and slave byte placement note that cases 10, 12, and 15 will not normally be produced during pcnet-32 controller bus master operations. these cases will only occur during bus master operations if the software programs an extremely short buffer size into the descriptor bcnt field, where extremely short means exactly 4, 3, 2 or 1 bytes in length. bswp = 0 corresponds to little endian byte ordering. bswp = 1 corresponds to big endian byte ordering. case no. a[1:0] bswp be3 ? be0 d[31:24] d[23:16] d[15:8] d[7:0] 1a 00 0 0000 byte3 byte2 byte1 byte0 1b 00 1 0000 byte0 byte1 byte2 byte3 2b 01 1 1000 undef byte0 byte1 byte2 3a 10 0 0011 byte1 byte0 copy1 copy0 3b 10 1 1100 undef undef byte0 byte1 4a 11 0 0111 byte0 undef copy0 undef 4b 11 1 1110 undef undef undef byte0 5a 00 0 1000 undef byte2 byte1 byte0 5b 00 1 0001 byte0 byte1 byte2 undef 6a 01 0 0001 byte2 byte1 byte0 undef 6b 01 1 1000 undef byte0 byte1 byte2 7a 10 0 0011 byte1 byte0 copy1 copy0 7b 10 1 1100 undef undef byte0 byte1 8a 11 0 0111 byte0 undef copy0 undef 8b 11 1 1110 undef undef undef byte0 9a 00 0 1100 undef undef byte1 byte0 9b 00 1 0011 byte0 byte1 copy0 copy1 10a 01 0 1001 undef byte1 byte0 undef 10b 01 1 1001 undef byte0 byte1 undef 11a 10 0 0011 byte1 byte0 copy1 copy0 11b 10 1 1100 undef undef byte0 byte1 12a 11 0 0111 byte0 undef copy0 undef 12b 11 1 1110 undef undef undef byte0 13a 00 0 1110 undef undef undef byte0 13b 00 1 0111 byte0 undef copy0 undef 14a 01 0 1101 undef undef byte0 undef 14b 01 1 1011 undef byte0 undef copy0 15a 10 0 1011 undef byte0 undef copy0 15b 10 1 1101 undef undef byte0 undef 16a 11 0 0111 byte0 undef copy0 undef 16b 11 1 1110 undef undef undef byte0
86 AM79C965A buffer management unit the buffer management unit is a micro-coded state machine which implements the initialization procedure and manages the descriptors and buffers. the buffer management unit operates at a speed of bclk 2. initialization pcnet-32 controller initialization includes the reading of the initialization block in memory to obtain the operating parameters. the initialization block must be located on a double word (4-byte) address boundary, regardless of the setting of the ssize32, (csr58[8]/ bcr20[8]) bit. the initialization block is read when the init bit in csr0 is set. the init bit should be set before or concurrent with the strt bit to insure correct operation. two double-words are read during each period of bus mastership. when ssize32 = 1 (csr58[8]/ bcr20[8]), this results in a total of 4 arbitration cycles (3 arbitration cycles if ssize32 = 0). once the initialization block has been completely read in and internal registers have been updated, idon will be set in csr0, and an interrupt generated (if iena is set). at this point, the bmu knows where the receive and transmit descriptor rings and hence, normal network operations will begin. the initialization block is vectored by the contents of csr1 (least significant 16 bits of address) and csr2 (most significant 16 bits of address). the block contains the user defined conditions for pcnet-32 controller operation, together with the base addresses and length information of the transmit and receive descriptor rings. there is an alternative method to initialize the pcnet-32 controller. instead of initialization via the initialization block in memory, data can be written directly into the appropriate registers. either method may be used at the discretion of the programmer. if the registers are written to directly, the init bit must not be set, or the initialization block will be read in, thus overwriting the previously written information. please refer to appendix c for details on this alternative method. re-initialization the transmitter and receiver sections of the pcnet-32 controller can be turned on via the initialization block (mode register dtx, drx bits; csr15[1:0]). the states of the transmitter and receiver are monitored by the host through csr0 (rxon, txon bits). the pcnet-32 controller should be reinitialized if the trans- mitter and/or the receiver were not turned on during the original initialization, and it was subsequently required to activate them or if either section was shut off due to the detection of an error condition (mer, uflo, tx buff error). re-initialization may be done via the initialization block or by setting the stop bit in csr0, followed by writing to csr15, and then setting the start bit in csr0. note that this form of restart will not perform the same in the pcnet-32 controller as in the lance. in particular, upon restart, the pcnet-32 controller reloads the transmit and receive descriptor pointers with their respective base addresses. this means that the software must clear the descriptor own bits and reset its descriptor ring pointers before the restart of the pcnet-32 controller. the reload of descriptor base addresses is performed in the lance only after initialization, so a restart of the lance without initialization leaves the lance pointing at the same descriptor locations as before the restart. buffer management buffer management is accomplished through message descriptor entries organized as ring structures in mem- ory. there are two rings, a receive ring and a transmit ring. the size of a message descriptor entry is 4 double-words, or 16 bytes, when ssize32 = 1. the size of a message descriptor entry is 4 words, or 8 bytes, when ssize32 = 0 (csr58[8]/bcr20[8]). descriptor rings each descriptor ring must be organized in a contiguous area of memory. at initialization time (setting the init bit in csr0), the pcnet-32 controller reads the user- defined base address for the transmit and receive descriptor rings, as well as the number of entries contained in the descriptor rings. descriptor ring base addresses must be on a 16-byte boundary when ssize32 = 1, or on an 8-byte boundary when ssize32 = 0. a maximum of 128 (or 512, depending upon the value of ssize32) ring entries is allowed when the ring length is set through the tlen and rlen fields of the initialization block. however, the ring lengths can be set beyond this range (up to 65535) by writing the transmit and receive ring length registers (csr76, csr78) directly. each ring entry contains the following information: 1. the address of the actual message data buffer in user or host memory 2. the length of the message buffer 3. status information indicating the condition of the buffer to permit the queuing and dequeuing of message buff- ers, ownership of each buffer is allocated to either the pcnet-32 controller or the host. the own bit within the descriptor status information, either tmd or rmd (see section on tmd or rmd), is used for this purpose. own = ? 1 ? signifies that the pcnet-32 controller cur- rently has ownership of this ring descriptor and its associated buffer. only the owner is permitted to relinquish ownership or to write to any field in the
AM79C965A 87 descriptor entry. a device that is not the current owner of a descriptor entry cannot assume ownership or change any field in the entry. a device may, however, read from a descriptor that it does not currently own. software should always read descriptor entries in sequential order. when software finds that the current descriptor is owned by the pcnet-32 controller, then the software must not read ? ahead ? to the next descriptor. the software should wait at the unowned descriptor until ownership has been granted to the software (when sprinten = 1 (csr3, bit5), then this rule is modified. see the sprinten description). strict adherence to these rules insures that ? deadly embrace ? conditions are avoided. descriptor ring access mechanism at initialization, the pcnet-32 controller reads the base address of both the transmit and receive descriptor rings into csrs for use by the pcnet-32 controller during subsequent operations. as the final step in the self-initialization process, the base address of each ring is loaded into each of the current descriptor address registers and the address of the next descriptor entry in the transmit and receive rings is computed and loaded into each of the next de- scriptor address registers. when ssize32 = 0, software data structures are 16 bits wide. figure 28 illustrates the relationship between the initialization base address, the initialization block, the receive and transmit descriptor ring base addresses, the receive and transmit descriptors and the receive and transmit data buffers, for the case of ssize32 = 0. figure 28. 16-bit initialization block descriptor rings initialization block 24-bit base address pointer to initialization block iadr[15:0] iadr[23:16] res csr1 csr2 tdra[15:0] mode padr[15:0] padr[31:16] padr[47:32] ladrf[15:0] ladrf[31:16] ladrf[47:32] ladrf[63:48] rdra[15:0] rlen res rdra[23:16] tlen res tdra[23:16] rcv buffers rmd0 rmd1 rmd2 rmd3 rcv descriptor ring n n n n 1st desc. start 2nd desc. start rmd0 xmt buffers rx descriptor rings tmd0 tmd1 tmd2 tmd3 rx descriptor rings xmt descriptor ring m m m m 1st desc. start 2nd desc. start tmd0 data buffer n data buffer 1 data buffer 2 data buffer m data buffer 1 data buffer 2 18219-35
88 AM79C965A when ssize32 = 1, software data structures are 32 bits wide. figure 29 illustrates the relationship between the initialization base address, the initialization block, the receive and transmit descriptor ring base addresses (tdra/rdra), the receive and transmit descriptors and the receive and transmit data buffers, for the case of ssize32 = 1. polling if there is no network channel activity and there is no pre- or post-receive or pre- or post-transmit activity be- ing performed by the pcnet-32 controller, then the pcnet-32 controller will periodically poll the current re- ceive and transmit descriptor entries in order to ascer- tain their ownership. if the dpoll bit in csr4 is set, then transmit polling function is disabled. a typical polling operation consists of the following: the pcnet-32 controller will use the current receive descriptor address stored internally to vector to the appropriate receive descriptor table entry (rdte). it will then use the current transmit descriptor address (stored internally) to vector to the appropriate transmit descriptor table entry (tdte). the accesses will be made in the following order: rmd1, then rmd0 of the current rdte during one bus arbitration, and after that, tmd1, then tmd0 of the current tdte during a second bus arbitration. all information collected during polling activity will be stored internally in the appropriate csrs (i.e. csr18, csr19, csr20, csr21, csr40, csr42, csr50, csr52). unowned descriptor status will be internally ignored. figure 29. 32-bit initialization block and descriptor ring a typical receive poll is the product of the following con- ditions: 1. pcnet-32 controller does not possess ownership of the current rdte and the poll time has elapsed and rxon = 1, or initialization block 32-bit base address pointer to initialization block csr1 csr2 rcv buffers rmd0 rmd1 rmd2 rmd3 rcv descriptor ring n n n n 1st desc. start 2nd desc. start rmd0 xmt buffers rx descriptor rings tmd0 tmd1 tmd2 tmd3 rx descriptor rings xmt descriptor ring m m m m 1st desc. start 2nd desc. start tmd0 data buffer n data buffer 1 data buffer 2 data buffer m data buffer 2 data buffer 1 padr[31:0] iadr[31:16] iadr[15:0] tlen res rlen res mode padr[47:32] res ladrf[31:0] ladrf[63:32] rdra[31:0] tdra[31:0] 18219-36
AM79C965A 89 2. pcnet-32 controller does not possess ownership of the next rdte the poll time has elapsed and rxon = 1. if rxon = 0 the pcnet-32 controller will never poll rdte locations. the ideal system should always have at least one rdte available for the possibility of an unpredictable receive event. (this condition is not a requirement. if this condition is not met, it simply means that frames will be missed by the system because there was no buffer space available.) but the typical system usually has at least one or two rdtes available for the possibility of an unpredictable receive event. given that this condition is satisfied, the current and next rdte polls are rarely seen and hence, the typical poll operation simply consists of a check of the status of the current tdte. when there is only one rdte (because the rlen was set to zero), then there is no ? next rdte ? and ownership of ? next rdte ? cannot be checked. if there is at least one rdte, the rdte poll will rarely be seen and the typical poll operation simply consists of a check of the current tdte. a typical transmit poll is the product of the following conditions: 1. pcnet-32 controller does not possess ownership of the current tdte and dpoll = 0 and txon = 1 and the poll time has elapsed, or 2. pcnet-32 controller does not possess ownership of the current tdte and dpoll = 0 and txon = 1 and a frame has just been received, or 3. pcnet-32 controller does not possess ownership of the current tdte and dpoll = 0 and txon = 1 and a frame has just been transmitted. setting the tdmd bit of csr0 will cause the microcode controller to exit the poll counting code and immediately perform a polling operation. if rdte ownership has not been previously established, then an rdte poll will be performed ahead of the tdte poll. if the microcode is not executing the poll counting code when the tdmd bit is set, then the demanded poll of the tdte will be delayed until the microcode returns to the poll counting code. the user may change the poll time value from the de- fault of 65,536 bclk periods by modifying the value in the polling interval register (csr47). note that if a non- default value is desired, then a strict sequence of setting the init bit in csr0, waiting for idon (csr0[8]), then writing to csr47, and then setting strt in csr0 must be observed, otherwise the default value will not be overwritten. see the csr47 section for details. transmit descriptor table entry (tdte) if, after a tdte access, the pcnet-32 controller finds that the own bit of that tdte is not set, then the pcnet-32 controller resumes the poll time count and reexamines the same tdte at the next expiration of the poll time count. if the own bit of the tdte is set, but stp = 0, the pcnet-32 controller will immediately request the bus in order to reset the own bit of this descriptor. (this condition would normally be found following a lcol or retry error that occurred in the middle of a transmit frame chain of buffers.) after resetting the own bit of this descriptor, the pcnet-32 controller will again imme- diately request the bus in order to access the next tdte location in the ring. if the own bit is set and the buffer length is 0, the own bit will be reset. in the lance the buffer length of 0 is interpreted as a 4096-byte buffer. it is acceptable to have a 0 length buffer on transmit with stp = 1 or stp = 1 and enp = 1. it is not acceptable to have 0 length buffer with stp = 0 and enp =1. if the own bit is set and the start of packet (stp) bit is set, then microcode control proceeds to a routine that will enable transmit data transfers to the fifo. the pcnet-32 controller will look ahead to the next transmit descriptor after it has performed at least one transmit data transfer from the first buffer. (more than one trans- mit data transfer may possibly take place, depending upon the state of the transmitter.) the contents of tmd0 and tmd1 will be stored in next xmt buffer address (csr64 and csr65), next xmt byte count (csr66) and next xmt status (csr67) regardless of the state of the own bit. this transmit descriptor look- ahead operation is performed only once. if the pcnet-32 controller does not own the next tdte (i.e. the second tdte for this frame), then it will com- plete transmission of the current buffer and then update the status of the current (first) tdte with the buff and uflo bits being set. this will cause the transmitter to be disabled (csr0, txon=0). the pcnet-32 controller will have to be re-initialized to restore the transmit function. the situation that matches this description implies that the system has not been able to stay ahead of the pcnet-32 controller in the transmit descriptor ring and therefore, the condition is treated as a fatal error. (to avoid this situation, the system should always set the transmit chain descriptor own bits in reverse order.) if the pcnet-32 controller does own the second tdte in a chain, it will gradually empty the contents of the first buffer (as the bytes are needed by the transmit opera-
90 AM79C965A tion), perform a single-cycle dma transfer to update the status of the first descriptor (reset the own bit in tmd1), and then it may perform one data dma access on the second buffer in the chain before executing an- other look-ahead operation (i.e. a look-ahead to the third descriptor.) the pcnet-32 controller can queue up to two frames in the transmit fifo. call them frame ? x ? and frame ? y ? , where ? y ? is after ? x ? . assume that frame ? x ? is currently being transmitted. because the pcnet-32 controller can perform look-ahead data transfer past the enp of frame ? x ? , it is possible for the pcnet-32 controller to completely transfer the data from a buffer belonging to frame ? y ? into the fifo even though frame ? x ? has not yet been completely transmitted. at the end of this ? y ? buffer data transfer, the pcnet-32 controller will write intermediate status (change the own bit to a zero) for the ? y ? frame buffer, if frame ? y ? uses data chaining. the last tdte for the ? x ? frame (containing enp) has not yet been written, since the ? x ? frame has not yet been completely transmitted. note that the pcnet-32 controller has, in this instance, returned ownership of a tdte to the host out of a ? normal ? sequence. for this reason, it becomes imperative that the host system should never read the transmit dte ownership bits out of order. there should be no problems for software which proc- esses buffers in sequence, waiting for ownership before proceeding. if an error occurs in the transmission before all of the bytes of the current buffer have been transferred, then tmd2 and tmd1 of the current buffer will be written. in such a case, data transfers from the next buffer will not commence. instead, following the tmd2/tmd1 update, the pcnet-32 controller will go to the next transmit frame, if any, skipping over the rest of the frame which experienced an error, including chained buffers. this is done by returning to the polling microcode where pcnet-32 controller will immediately access the next descriptor and find the condition own=1 and stp=0 as described earlier. as described for that case, the pcnet-32 controller will reset the own bit for this descriptor and continue in like manner until a descriptor with own=0 (no more transmit frames in the ring) or own=1 and stp=1 (the first buffer of a new frame) is reached. at the end of any transmit operation, whether successful or with errors, immediately following the completion of the descriptor updates, the pcnet-32 controller will al ways perform another poll operation. as described earlier, this poll operation will begin with a check of the current rdte, unless the pcnet-32 controller already owns that descriptor. then the pcnet-32 controller will proceed to polling the next tdte. if the transmit descriptor own bit has a zero value, then the pcnet-32 controller will resume poll time count incrementing. if the transmit descriptor own bit has a value of one, then the pcnet-32 controller will begin filling the fifo with transmit data and initiate a transmission. this end-of-operation poll coupled with the tdte look-ahead operation allows the pcnet-32 controller to avoid inserting poll time counts between successive transmit frames. whenever the pcnet-32 controller completes a transmit frame (either with or without error) and writes the status information to the current descriptor, then the tint bit of csr0 is set to indicate the completion of a transmission. this causes an interrupt signal if the iena bit of csr0 has been set and the tintm bit of csr3 is reset. receive descriptor table entry (rdte) if the pcnet-32 controller does not own both the current and the next receive descriptor table entry then the pcnet-32 controller will continue to poll according to the polling sequence described above. if the receive descriptor ring length is 1, then there is no next descriptor to be polled. if a poll operation has revealed that the current and the next rdte belong to the pcnet-32 controller then additional poll accesses are not necessary. future poll operations will not include rdte accesses as long as the pcnet-32 controller retains ownership of the current and the next rdte. when receive activity is present on the channel, the pcnet-32 controller waits for the complete address of the message to arrive. it then decides whether to accept or reject the frame based on all active addressing schemes. if the frame is accepted the pcnet-32 controller checks the current receive buffer status register crst (csr41) to determine the ownership of the current buffer. if ownership is lacking, then the pcnet-32 controller will immediately perform a (last ditch) poll of the current rdte. if ownership is still denied, then the pcnet-32 controller has no buffer in which to store the incoming message. the miss bit will be set in csr0 and an interrupt will be generated if inea=1 (csr0) and missm=0 (csr3). another poll of the current rdte will not occur until the frame has finished. if the pcnet-32 controller sees that the last poll (either a normal poll, or the last-ditch effort described in the above paragraph) of the current rdte shows valid ownership, then it proceeds to a poll of the next rdte. following this poll, and regardless of the outcome of this poll, transfers of receive data from the fifo may begin. regardless of ownership of the second receive descriptor, the pcnet-32 controller will continue to perform receive data dma transfers to the first buffer, using burst-cycle dma transfers. if the frame length
AM79C965A 91 exceeds the length of the first buffer, and the pcnet-32 controller does not own the second buffer, ownership of the current descriptor will be passed back to the system by writing a zero to the own bit of rmd1 and status will be written indicating buffer (buff=1) and possibly overflow (oflo=1) errors. if the frame length exceeds the length of the first (cur- rent) buffer, and the pcnet-32 controller does own the second (next) buffer, ownership will be passed back to the system by writing a zero to the own bit of rmd1 when the first buffer is full. receive data transfers to the second buffer may occur before the pcnet-32 controller proceeds to look ahead to the ownership of the third buffer. such action will depend upon the state of the fifo when the status has been updated on the first descriptor. in any case, look-ahead will be performed to the third buffer and the information gathered will be stored in the chip, regardless of the state of the ownership bit. as in the transmit flow, look- ahead operations are performed only once. this activity continues until the pcnet-32 controller rec- ognizes the completion of the frame (the last byte of this receive message has been removed from the fifo). the pcnet-32 controller will subsequently update the current rdte status with the end of frame (enp) indication set, write the message byte count (mcnt) of the complete frame into rmd2 and overwrite the ? current ? entries in the csrs with the ? next ? entries. media access control the media access control engine incorporates the es- sential protocol requirements for operation of a compli- ant ethernet/802.3 node, and provides the interface between the fifo subsystem and the manchester encoder/ decoder (mendec). the mac engine is fully compliant to section 4 of iso/ iec 8802-3 (ansi/ieee standard 1990 second edition) and ansi/ieee 802.3 (1985). the mac engine provides programmable enhanced features designed to minimize host supervision, bus utilization, and pre- or post-message processing. these include the ability to disable retries after a collision, dynamic fcs generation on a frame-by-frame basis, and automatic pad field insertion and deletion to enforce minimum frame size attributes and reduces bus bandwidth use. the two primary attributes of the mac engine are: transmit and receive message data encapsulation. ? framing (frame boundary delimitation, frame synchronization) ? addressing (source and destination address handling) ? error detection (physical medium transmission errors) media access management. ? medium allocation (collision avoidance) ? contention resolution (collision handling) transmit and receive message data encapsulation the mac engine provides minimum frame size enforcement for transmit and receive frames. when apad_xmt = 1 (csr4[11]), transmit messages will be padded with sufficient bytes (containing 00h) to ensure that the receiving station will observe an information field (destination address, source address, length/type, data and fcs) of 64 bytes. when astrp_rcv = 1 (csr4[10]), the receiver will automatically strip pad bytes from the received message by observing the value in the length field, and stripping excess bytes if this value is below the minimum data size (46 bytes). both features can be independently overridden to allow illegally short (less than 64 bytes of frame data) messages to be transmitted and/or received. use of this feature decreases bus usage because the pad bytes are not transferred into or out of host memory. framing (frame boundary delimitation, frame synchronization) the mac engine will autonomously handle the con- struction of the transmit frame. once the transmit fifo has been filled to the predetermined threshold (set by xmtsp in csr80), and providing access to the channel is currently permitted, the mac engine will commence the 7-byte preamble sequence (10101010b, where first bit transmitted is a 1). the mac engine will subsequently append the start frame delimiter (sfd) byte (10101011b) followed by the serialized data from the transmit fifo. once the data has been completed, the mac engine will append the fcs (most significant bit first) which was computed on the message (destination address, source address, length field, data field, and pad (if applicable)). note that the user is responsible for the correct ordering and content in each of the fields in the frame, including the destination address, source address, length/type and frame data. the receive section of the mac engine will detect an incoming preamble sequence and lock to the encoded clock. the internal mendec will decode the serial bit stream and present this to the mac engine. the mac will discard the first 8-bits of information before search- ing for the sfd sequence. once the sfd is detected, all subsequent bits are treated as part of the frame. the mac engine will inspect the length field to ensure mini- mum frame size, strip unnecessary pad characters (if enabled), and pass the remaining bytes through the receive fifo to the host. if pad stripping is performed, the mac engine will also strip the received fcs bytes,
92 AM79C965A although the normal fcs computation and checking will occur. note that apart from pad stripping, the frame will be passed unmodified to the host. if the length field has a value of 46 or greater, the mac engine will not attempt to validate the length against the number of bytes contained in the message. if the frame terminates or suffers a collision before 64 bytes of information (after sfd) have been received, the mac engine will automatically delete the frame from the receive fifo, without host intervention. addressing (source and destination address handling) the first 6 bytes of information after sfd will be inter- preted as the destination address field. the mac engine provides facilities for physical, logical (multicast) and broadcast address reception. in addition, multiple physical addresses can be constructed (perfect address filtering) using external logic in conjunction with the eadi interface. error detection (physical medium transmission errors) the mac engine provides several facilities which report and recover from errors on the medium. in addition, the network is protected from gross errors due to inability of the host to keep pace with the mac engine activity. on completion of transmission, the following transmit status is available in the appropriate tmd and csr areas: the number of transmission retry attempts (one, more or rtry). whether the mac engine had to defer (def) due to channel activity. excessive deferral (exdef), indicating that the transmitter has experienced excessive deferral on this transmit frame, where excessive deferral is de- fined in iso 8802-3 (ieee/ansi 802.3). loss of carrier (lcar) indicates that there was an interruption in the ability of the mac engine to mon- itor its own transmission. repeated lcar errors in- dicate a potentially faulty transceiver or network connection. late collision (lcol) indicates that the transmis- sion suffered a collision after the slot time. this is in- dicative of a badly configured network. late collisions should not occur in a normal operating network. collision error (cer) indicates that the transceiver did not respond with an sqe test message within the predetermined time after a transmission com- pleted. this may be due to a failed transceiver, dis- connected or faulty transceiver drop cable, or the fact the transceiver does not support this feature (or it is disabled). in addition to the reporting of network errors, the mac engine will also attempt to prevent the creation of any network error due to the inability of the host to service the mac engine. during transmission, if the host fails to keep the transmit fifo filled sufficiently, causing an underflow, the mac engine will guarantee the message is either sent as a runt packet (which will be deleted by the receiving station) or has an invalid fcs (which will also cause the receiver to reject the message). the status of each receive message is available in the appropriate rmd and csr areas. fcs and framing errors (fram) are reported, although the received frame is still passed to the host. the error will only be reported if an fcs error is detected and there are a non integral number of bytes in the message. the mac engine will ignore up to 7 additional bits at the end of a message (dribbling bits), which can occur under normal network operating conditions. the reception of 8 additional bits will cause the mac engine to de- serialize the entire byte, and will result in the received message and fcs being modified. the pcnet-32 controller can handle up to 7 dribbling bits when a received frame terminates. during the reception, the fcs is generated on every serial bit (including the dribbling bits) coming from the cable, although the internally saved fcs value is only updated on the eighth bit (on each byte boundary). the framing error is reported to the user as follows: if the number of dribbling bits are 1 to 7 and there is no crc (fcs) error, then there is no framing error (fram = 0). if the number of dribbling bits are 1 to 7 and there is a crc (fcs) error, then there is also a framing error (fram = 1). if the number of dribbling bits = 0, then there is no framing error. there may or may not be a crc (fcs) error. counters are provided to report the receive collision count and runt packet count for network statistics and utilization calculations. note that if the mac engine detects a received frame which has a 00b pattern in the preamble (after the first 8-bits which are ignored), the entire frame will be ig- nored. the mac engine will wait for the network to go inactive before attempting to receive additional frames. media access management the basic requirement for all stations on the network is to provide fairness of channel allocation. the 802.3/ ethernet protocols define a media access mechanism which permits all stations to access the channel with equality. any node can attempt to contend for the channel by waiting for a predetermined time (inter
AM79C965A 93 packet gap internal) after the last activity, before transmitting on the media. the channel is a multidrop communications media (with various topological configurations permitted) which allows a single station to transmit and all other stations to receive. if two nodes simultaneously contend for the channel, their signals will interact causing loss of data, defined as a collision. it is the responsibility of the mac to attempt to avoid and recover from a collision, to guarantee data integrity for the end-to-end transmission to the receiving station. medium allocation the ieee/ansi 802.3 standard (iso/iec 8802-3 1990) requires that the csma/cd mac monitor the medium for traffic by watching for carrier activity. when carrier is detected, the media is considered busy, and the mac should defer to the existing message. the iso 8802-3 (ieee/ansi 802.3) standard also al- lows optional two-part deferral after a receive message. see ansi/ieee std 802.3-1990 edition, 4.2.3.2.1: ?note: it is possible for the pls carrier sense indica- tion to fail to be asserted during a collision on the me- dia. if the deference process simply times the inter packet gap based on this indication it is possible for a short inter packet gap to be generated, leading to a potential reception failure of a subsequent frame. to enhance system robustness the following optional measures, as specified in 4.2.8, are recommended when inter frame spacing part 1 is other than zero: 1. upon completing a transmission, start timing the interpacket gap, as soon as transmitting and car- rier sense are both false. 2. when timing an inter packet gap following recep- tion, reset the inter packet gap timing if carrier sense becomes true during the first 2/3 of the inter-packet gap timing interval. during the final 1/ 3 of the interval the timer shall not be reset to en sure fair access to the medium. an initial period shorter than 2/3 of the interval is permissible in cluding zero. the mac engine implements the optional receive two part deferral algorithm, with a first part inter-frame- spacing time of 6.0 s. the second part of the inter- frame-spacing interval is therefore 3.6 s. the pcnet-32 controller will perform the two part defer- ral algorithm as specified in section 4.2.8 (process deference). the inter packet gap (ipg) timer will start timing the 9.6 s inter frame spacing after the receive carrier is de-asserted. during the first part deferral (in- ter frame spacing part1 - ifs1) the pcnet-32 controller will defer any pending transmit frame and respond to the receive message. the ipg counter will be reset to zero continuously until the carrier de- asserts, at which point the ipg counter will resume the 9.6 s count once again. once the ifs1 period of 6.0 s has elapsed, the pcnet-32 controller will begin timing the second part deferral (inter frame spacing part 2 - ifs2) of 3.6 s. once ifs1 has completed, and ifs2 has commenced, the pcnet-32 controller will not defer to a receive frame if a transmit frame is pending. this means that the pcnet-32 controller will not attempt to receive the receive frame, since it will start to transmit, and generate a collision at 9.6 s. the pcnet-32 controller will guarantee to complete the preamble (64-bit) and jam (32-bit) sequence before ceasing transmission and invoking the random back-off algorithm. this transmit two part deferral algorithm is implemented as an option which can be disabled using the dxmt2pd bit in csr3. two part deferral after transmission is useful for ensuring that severe ipg shrinkage cannot occur in specific circumstances, causing a transmit message to follow a receive message so closely as to make them indistinguishable. during the time period immediately after a transmission has been completed, the external transceiver (in the case of a standard aui connected device), should gen- erate the sqe test message (a nominal 10 mhz burst of 5-15 bit times duration) on the ci pair (within 0.6 - 1.6 s after the transmission ceases). during the time period in which the sqe test message is expected the pcnet-32 controller will not respond to receive carrier sense. see ansi/ieee std 802.3-1990 edition, 7.2.4.6 (1)): ? at the conclusion of the output function, the dte opens a time window during which it expects to see the signal_quality_error signal asserted on the control in circuit. the time window begins when the carrier_ status becomes carrier_off. if execution of the output function does not cause carrier_on to occur, no sqe test occurs in the dte. the duration of the window shall be at least 4.0 s but no more than 8.0 s. during the time window, the carrier sense function is inhibited. ? the pcnet-32 controller implements a carrier sense ? blinding ? period within 0 s ? 4.0 s from de-assertion of carrier sense after transmission. this effectively means that when transmit two part deferral is enabled (dxmt2pd is cleared) the ifs1 time is from 4 s to 6 s after a transmission. however, since ipg shrinkage below 4 s will rarely be encountered on a correctly configured networks, and since the fragment size will be larger than the 4 s blinding window, then the ipg counter will be reset by a worst case ipg shrinkage/ fragment scenario and the pcnet-32 controller will defer its transmission. in addition, the pcnet-32 controller will not restart the ? blinding ? period if carrier
94 AM79C965A is detected within the 4.0 s ? 6.0 s ifs1 period, but will commence timing of the entire ifs1 period. contention resolution (collision handling) collision detection is performed and reported to the mac engine by the integrated manchester encoder/ decoder (mendec). if a collision is detected before the complete preamble/ sfd sequence has been transmitted, the mac engine will complete the preamble/sfd before appending the jam sequence. if a collision is detected after the pream- ble/sfd has been completed, but prior to 512 bits being transmitted, the mac engine will abort the transmission, and append the jam sequence immediately. the jam sequence is a 32-bit all zeroes pattern. the mac engine will attempt to transmit a frame a total of 16 times (initial attempt plus 15 retries) due to normal collisions (those within the slot time). detection of collision will cause the transmission to be rescheduled, dependent on the back-off time that the mac engine computes. if a single retry was required, the one bit will be set in the transmit frame status. if more than one retry was required, the more bit will be set. if all 16 attempts experienced collisions, the rtry bit will be set (one and more will be clear), and the transmit message will be flushed from the fifo. if retries have been disabled by setting the drty bit in csr15, the mac engine will abandon transmission of the frame on detection of the first collision. in this case, only the rtry bit will be set and the transmit message will be flushed from the fifo. if a collision is detected after 512 bit times have been transmitted, the collision is termed a late collision. the mac engine will abort the transmission, append the jam sequence and set the lcol bit. no retry attempt will be scheduled on detection of a late collision, and the transmit message will be flushed from the fifo. the iso 8802-3 (ieee/ansi 802.3) standard requires use of a ? truncated binary exponential back-off ? algo- rithm which provides a controlled pseudo random mechanism to enforce the collision back-off interval, be-fore retransmission is attempted. see ansi/ieee std 802.3-1990 edition, 4.2.3.2.5: ? at the end of enforcing a collision (jamming), the csma/cd sublayer delays before attempting to re- transmit the frame. the delay is an integer multiple of slottime. the number of slot times to delay before the nth retransmission attempt is chosen as a uniformly distributed random integer r in the range: 0 r < 2k ? 1 where k = min (n,10). ? the pcnet-32 controller provides an alternative algo- rithm, which suspends the counting of the slot time/ipg during the time that receive carrier sense is detected. this aids in networks where large numbers of nodes are present, and numerous nodes can be in collision. it effectively accelerates the increase in the back-off time in busy networks, and allows nodes not involved in the collision to access the channel whilst the colliding nodes await a reduction in channel activity. once channel activity is reduced, the nodes resolving the collision time out their slot time counters as normal. manchester encoder/decoder (mendec) the integrated manchester encoder/decoder provides the pls (physical layer signaling) functions required for a fully compliant iso 8802-3 (ieee/ansi 802.3) station. the mendec provides the encoding function for data to be transmitted on the network using the high accuracy on-board oscillator, driven by either the crystal oscillator or an external cmos level compatible clock. the mendec also provides the decoding function from data received from the network. the mendec contains a power on reset (por) circuit, which ensures that all analog portions of the pcnet-32 controller are forced into their correct state during power up, and prevents erroneous data transmission and/or reception during this time. external crystal characteristics when using a crystal to drive the oscillator, the crystal specification shown in table 26 may be used to ensure less than 0.5 ns jitter at the transmit outputs. table 26. external crystal specification *requires trimming spec,: no trim is 50 ppm total. external clock drive characteristics when driving the oscillator from an external clock source, xtal2 must be left floating (unconnected). an external clock having the following characteristics must be used to ensure less than 0.5 ns jitter at the transmit outputs. see table 27. parameter min nom max unit 1.parallel resonant frequency 20 mhz 2.resonant frequency error ? 50 +50 ppm 3.change in resonant frequency with respect to temperature (0 c ? 70 c)* ? 40 +40 ppm 20 50 pf 4.crystal load capacitance 5.motional crystal capacitance (c1) 0.022 pf 6.series resistance 25 ohm 7.shunt capacitance 7 pf 8.drive level tbd mw
AM79C965A 95 table 27. external clock drive characteristics mendec transmit path the transmit section encodes separate clock and nrz data input signals into a standard manchester encoded serial bit stream. the transmit outputs (do/txd) are designed to operate into terminated transmission lines. when operating into a 78 w terminated transmission line, the transmit signaling meets the required output levels and skew for cheapernet, ethernet and ieee-802.3. transmitter timing and operation a 20 mhz fundamental mode crystal oscillator provides the basic timing reference for the mendec portion of the pcnet-32 controller. the crystal is divided by two, to create the internal transmit clock reference. both clocks are fed into the mendec ? s manchester encoder to generate the transitions in the encoded data stream. the internal transmit clock is used by the mendec to internally synchronize the internal transmit data (itxdat) from the controller and internal transmit enable (itxen). the internal transmit clock is also used as a stable bit rate clock by the receive section of the mendec and controller. the oscillator requires an external 0.01% timing refer- ence. the accuracy requirements, if an external crystal is used are tighter because allowance for the on-board parasitics must be made to deliver a final accuracy of 0.01%. transmission is enabled by the controller. as long as the itxen request remains active, the serial output of the controller will be manchester encoded and appear at do/txd. when the internal request is dropped by the controller, the differential transmit outputs go to one of two idle states, dependent on tsel in the mode register (csr15, bit 9): receiver path the principal functions of the receiver are to signal the pcnet-32 controller that there is information on the re- ceive pair, and separate the incoming manchester en- coded data stream into clock and nrz data. the receiver section (see figure 30) consists of two parallel paths. the receive data path is a zero threshold, wide bandwidth line receiver. the carrier path is an offset threshold bandpass detecting line receiver. both receivers share common bias networks to allow operation over a wide input common mode range. input signal conditioning transient noise pulses at the input data stream are re- jected by the noise rejection filter. pulse width rejec- tion is proportional to transmit data rate. the carrier detection circuitry detects the presence of an incoming data frame by discerning and rejecting noise from expected manchester data, and controls the stop and start of the phase-lock loop during clock acquisition.clock acquisition requires a valid manchester bit pattern of 1010b to lock onto the incoming message. when input amplitude and pulse width conditions are met at di/rxd, the internal enable signal from the mendec to controller (irxcrs) is asserted and clock acquisition cycle is initiated. clock acquisition when there is no activity at di (receiver is idle), the receive oscillator is phase locked to the internal transmit clock. the first negative clock transition (bit cell center of first valid manchester ? 0 ? ) after irxcrs is asserted interrupts the receive oscillator. the oscillator is then restarted at the second manchester ? 0 ? (bit time 4) and phase locked to it. as a result, the mendec acquires the clock from the incoming manchester bit pattern in bit times with a ? 1010 ? manchester bit pattern. isrdclk and irxdat are enabled 1/4 bit time after clock acquisition in bit cell 5. irxdat is at a high state when the receiver is idle (no isrdclk). irxdat however, is undefined when clock is acquired and may remain high or change to low state whenever isrdclk is enabled. at 1/4 bit time through bit cell 5,the controller portion of the pcnet-32 controller sees the first isrdclk transition. this also strobes in the incoming fifth bit to the mendec as manchester ? 1 ? . irxdat may make a transition after the isrdclk rising edge bit cell 5, but its state is still undefined. the manchester ? 1 ? at bit 5 is clocked to irxdat output at 1/ 4 bit time bit cell 6. clock frequency: 20 mhz 0.01% rise/fall time (t r /t f ): < 6 ns from 0.5 v to v dd ? 0.5 xtal1 high/low time ( t high / t low ): 20 ns min xtal1 falling edge to falling edge jitter: < 0.2 ns at 2.5 v input (v dd /2) tsel low: the idle state of do/txd yields ? zero ? differential to operate transformer-coupled loads. tsel high: in this idle state, do+/txd+ is positive with respect to do ? /txd ? (logical high).
96 AM79C965A figure 30. receive block diagram pll tracking after clock acquisition, the phase-locked clock is com- pared to the incoming transition at the bit cell center (bcc) and the resulting phase error is applied to a cor- rection circuit. this circuit ensures that the phase- locked clock remains locked on the received signal. individual bit cell phase corrections of the voltage controlled oscillator (vco) are limited to 10% of the phase difference between bcc and phase-locked clock. hence, input data jitter is reduced in isrdclk by 10 to 1. carrier tracking and end of message the carrier detection circuit monitors the di inputs after irxcrs is asserted for an end of message. irxcrs de-asserts 1 to 2 bit times after the last positive transition on the incoming message. this initiates the end of reception cycle. the time delay from the last rising edge of the message to irxcrs de- assert allows the last bit to be strobed by isrdclk and transferred to the controller section, but prevents any extra bit(s) at the end of message. data decoding the data receiver is a comparator with clocked output to minimize noise sensitivity to the di/rxd inputs. input error is less than 35 mv to minimize sensitivity to input rise and fall time. isrdclk strobes the data receiver output at 1/4 bit time to determine the value of the manchester bit, and clocks the data out on irxdat on the following isrdclk. the data receiver also generates the signal used for phase detector comparison to the internal mendec voltage controlled oscillator (vco). jitter tolerance definition the mendec utilizes a clock capture circuit to align its internal data strobe with an incoming bit stream. the clock acquisition circuitry requires four valid bits with the values 1010b. clock is phase-locked to the negative transition at the bit cell center of the second ? 0 ? in the pattern. since data is strobed at 1/4 bit time, manchester transi- tions which shift from their nominal placement through 1/4 bit time will result in improperly decoded data. with this as the criteria for an error, a definition of ? jitter handling ? is: the peak deviation approaching or crossing 1/4 bit cell position from nominal input transition, for which the mendec section will properly decode data. attachment unit interface(aui) the aui is the pls (physical layer signaling) to pma (physical medium attachment) interface which effec- tively connects the dte to a mau. the differential interface provided by the pcnet-32 controller is fully compliant to section 7 of iso 8802-3 (ansi/ieee 802.3). after the pcnet-32 controller initiates a transmission it will expect to see data ? looped-back ? on the di pair (when the aui port is selected). this will internally gen- erate a ? carrier sense ? , indicating that the integrity of the data path to and from the mau is intact, and that the mau is operating correctly. this ? carrier sense ? signal must be asserted within tbd bit times after the first transmitted bit on do (when using the aui port). if ? carrier sense ? does not become active in response to the data transmission, or becomes inactive before the end of transmission, the loss of carrier (lcar) error bit noise reject filter data receiver carrier detect circuit manchester decoder irxdat* isrdclk* irxcrs* di /rxd * internal signal 18219-37
AM79C965A 97 will be set in the transmit descriptor ring (tmd2, bit27) after the frame has been transmitted. differential input terminations the differential input for the manchester data (di) is externally terminated by two 40.2 w 1% resistors and one optional common-mode bypass capacitor, as shown in the differential input termination diagram be- low. the differential input impedance, zidf, and the common-mode input impedance, zicm, are specified so that the ethernet specification for cable termination impedance is met using standard 1% resistor terminators. if sip devices are used, 39 w is also a suitable value. the ci differential inputs are terminated in exactly the same way as the di pair. figure 31. aui differential input termination collision detection a mau detects the collision condition on the network and generates a differential signal at the ci inputs. this collision signal passes through an input stage which detects signal levels and pulse duration. when the signal is detected by the mendec it sets the iclsn line high. the condition continues for approximately 1.5 bit times after the last low-to-high transition on ci. twisted-pair transceiver (t-mau) the t-mau implements the medium attachment unit (mau) functions for the twisted pair medium, as speci- fied by the supplement to iso 8802-3 (ieee/ansi 802.3) standard (type 10base-t). the t-mau pro- vides twisted pair driver and receiver circuits, including on-board transmit digital predistortion and receiver squelch and a number of additional features including link status indication, automatic twisted pair receive polarity detection/correction and indication, receive carrier sense, transmit active and collision present indication. t-mau gets reset during power-up by h_reset, by s_reset when reset port is read, or by asserting the reset pin. t-mau is not reset by stop. twisted pair transmit function the differential driver circuitry in the txd and txp pins provides the necessary electrical driving capability and the pre-distortion control for transmitting signals over maximum length twisted pair cable, as specified by the 10base-t supplement to the iso 8802-3 (ieee/ ansi 802.3) standard. the transmit function for data output meets the propagation delays and jitter specified by the standard. twisted pair receive function the receiver complies with the receiver specifications of the iso 8802-3 (ieee/ansi 802.3) 10base-t stan- dard, including noise immunity and received signal re- jection criteria ( ? smart squelch ? ). signals meeting this criteria appearing at the rxd differential input pair are routed to the mendec. the receiver function meets the propagation delays and jitter requirements specified by the standard. the receiver squelch level drops to half its threshold value after unsquelch to allow reception of minimum amplitude signals and to offset carrier fade in the event of worst case signal attenuation and crosstalk noise conditions. note that the 10base-t standard defines the receive input amplitude at the external media dependent inter- face (mdi). filter and transformer loss are not specified. the t-mau receiver squelch levels are defined to account for a 1 db insertion loss at 10 mhz, which is typical for the type of receive filters/ transformers employed. normal 10base-t compatible receive thresholds are employed when the lrt (csr15[9]) bit is low. when the lrt bit is set (high), the low receive threshold option is invoked, and the sensitivity of the t-mau re- ceiver is increased. this allows longer line lengths to be employed, exceeding the 100 m target distance of normal 10base-t (assuming typical 24 awg cable). the increased receiver sensitivity compensates for the increased signal attenuation caused by the additional cable distance. however, making the receiver more sensitive means that it is also more susceptible to extraneous noise, pri- marily caused by coupling from co-resident services (crosstalk). for this reason, it is recommended that when using the low receive threshold option that the service should be installed on 4-pair cable only. multi- pair cables within the same outer sheath have lower crosstalk attenuation, and may allow noise emitted from adjacent pairs to couple into the receive pair, and be of sufficient amplitude to falsely unsquelch the t- m a u. di+ di- 40.2 ? 40.2 ? 0.01 f to 0.1 f aui isolation transformer pcnet 32 18219-38
98 AM79C965A link test function the link test function is implemented as specified by 10base-t standard. during periods of transmit pair in- activity, ? link beat pulses ? will be periodically sent over the twisted pair medium to constantly monitor medium integrity. when the link test function is enabled (dlnktst bit in csr15 is cleared), the absence of link beat pulses and receive data on the rxd pair will cause the t-mau to go into a link fail state. in the link fail state, data transmission, data reception, data loopback and the collision detection functions are disabled, and remain disabled until valid data or >5 consecutive link pulses appear on the rxd pair. during link fail, the link status signal is inactive. when the link is identified as functional, the link status signal is asserted. the lnkst pin displays the link status signal by default. transmission attempts during link fail state will pro- duce no network activity and will produce lcar and cerr error indications. in order to inter-operate with systems which do not im- plement link test, this function can be disabled by set- ting the dlnktst bit in csr15. with link test disabled, the data driver, receiver and loopback functions as well as collision detection remain enabled regardless of the presence or absence of data or link pulses on the rxd pair. link test pulses continue to be sent regardless of the state of the dlnktst bit. polarity detection and reversal the t-mau receive function includes the ability to invert the polarity of the signals appearing at the rxd pair if the polarity of the received signal is reversed (such as in the case of a wiring error). this feature allows data frames received from a reverse wired rxd input pair to be corrected in the t-mau prior to transfer to the mendec. the polarity detection function is activated following h_reset or link fail, and will reverse the receive polarity based on both the polarity of any previous link beat pulses and the polarity of subsequent frames with a valid end transmit delimiter (etd). when in the link fail state, the t-mau will recognize link beat pulses of either positive or negative polarity. exit from the link fail state is made due to the reception of 5 ? 6 consecutive link beat pulses of identical polarity. on entry to the link pass state, the polarity of the last 5 link beat pulses is used to determine the initial receive polarity configuration and the receiver is reconfigured to subsequently recognize only link beat pulses of the previously recognized polarity. positive link beat pulses are defined as received signal with a positive amplitude greater than 585 mv (lrt = high) with a pulse width of 60 ns ? 200 ns. this positive excursion may be followed by a negative excursion. this definition is consistent with the expected received signal at a correctly wired receiver, when a link beat pulse which fits the template of figure 14-12 of the 10base-t standard is generated at a transmitter and passed through 100 m of twisted pair cable. negative link beat pulses are defined as received signals with a negative amplitude greater than 585 mv with a pulse width of 60 ns ? 200 ns. this negative excursion may be followed by a positive excursion. this definition is consistent with the expected received signal at a reverse wired receiver, when a link beat pulse which fits the template of figure 14-12 in the 10base-t standard is generated at a transmitter and passed through 100 m of twisted pair cable. the polarity detection/correction algorithm will remain ? armed ? until two consecutive frames with valid etd of identical polarity are detected. when ? armed ? , the re- ceiver is capable of changing the initial or previous po- larity configuration based on the etd polarity. on receipt of the first frame with valid etd following h_reset or link fail, the t-mau will utilize the inferred polarity information to configure its rxd input, regard- less of its previous state. on receipt of a second frame with a valid etd with correct polarity, the detection/cor- rection algorithm will ? lock-in ? the received polarity. if the second (or subsequent) frame is not detected as confirming the previous polarity decision, the most recently detected etd polarity will be used as the default. note that frames with invalid etd have no effect on updating the previous polarity decision. once two consecutive frames with valid etd have been received, the t-mau will disable the detection/ correction algorithm until either a link fail condition occurs or h_reset is activated. during polarity reversal, an internal pol signal will be active. during normal polarity conditions, this internal pol signal is inactive. the state of this signal can be read by software and/or displayed by led when en- abled by the led control bits in the bus configuration registers (bcr4 ? bcr7). twisted pair interface status three signals (xmt, rcv and col) indicate whether the t-mau is transmitting, receiving, or in a collision state with both functions active simultaneously. these signals are internal signals and the behavior of the led outputs depends on how the led output circuiting is programmed. the t-mau will power up in the link fail state and the normal algorithm will apply to allow it to enter the link pass state. in the link pass state, transmit or receive activity will be indicated by assertion of rcv signal go- ing active. if t-mau is selected using the portsel bits in csr15, then when moving from aui to t-mau
AM79C965A 99 selection the t-mau will be forced into the link fail state. in the link fail state, xmt, rcv and col are inactive. collision detect function activity on both twisted pair signals rxd and txd constitutes a collision, thereby causing the col signal to be activated. (col is used by the led control circuits) col will remain active until one of the two colliding signals changes from active to idle. however, transmission attempt in link fail state results in lcar and cerr indication. col stays active for 2-bit times at the end of a collision. signal quality error (sqe) test (heartbeat) function the sqe function is disabled when the 10base-t port is selected. jabber function the jabber function inhibits the twisted pair transmit function of the t-mau if the txd circuit is active for an excessive period (20 ms ? 150 ms). this prevents any one node from disrupting the network due to a 'stuck- on' or faulty transmitter. if this maximum transmit time is exceeded, the t-mau transmitter circuitry is disabled, the jab bit is set (csr4, bit1), the col signal is asserted. once the transmit data stream to the t-mau is removed, an ? unjab ? time of 250 ms ? 750 ms will elapse before the t-mau col and re-enables the transmit circuitry. power down the t-mau circuitry can be made to go into power sav- ings mode. this feature is useful in battery powered or low duty cycle systems. the t-mau will go into power down mode when h_reset is active, coma mode is active, or the t-mau is not selected. refer to the power savings modes section for descriptions of the various power down modes. any of the three conditions listed above resets the internal logic of the t-mau and places the device into power down mode. in this mode, the twisted pair driver pins (txd,txp) are driven low, and the internal t- mau status signals (lnkst, rcvpol, xmt, rcv and col) signals are inactive. once h_reset ends, coma mode is disabled, and the t-mau is selected. the t-mau will remain in the reset state for up to 10 s. immediately after the reset condi- tion is removed, the t-mau will be forced into the link fail state. the t-mau will move to the link pass state only after 5 ? 6 link beat pulses and/or a single received message is detected on the rd pair. in snooze mode, the t-mau receive circuitry will remain enabled even while the sleep pin is driven low. the t-mau circuitry will always go into power down mode if h_reset is asserted, coma mode is enabled, or the t-mau is not selected. 10base-t interface connection figure 32 shows the proper 10base-t network inter- face design. refer to the pcnet family technical man- ual (pid # 18216a) for more design details, and refer to appendix a for a list of compatible 10base-t filter/ transformer modules. note that the recommended resistor values and filter and transformer modules are the same as those used by the imr (am79c980) and the imr+ (am79c981). figure 32. 10base-t interface connection xmt filter rcv filter rj45 connector filter & transformer module pcnet-32 td+ td- rd+ rd- 1 2 3 6 61.9 ? 422 ? 61.9 ? 422 ? 100 ? 1.21 k ? 1:1 1:1 txd+ txp+ txd- txp- rxd+ rxd- 18219-39
100 AM79C965A ieee 1149.1 test access port interface an ieee 1149.1 compatible boundary scan test access port is provided for board level continuity test and diagnostics. all digital input, output and input/ output pins are tested. analog pins, including the aui differential driver (do) and receivers (di, ci), and the crystal input (xtal1/xtal2) pins, are tested. the t-mau drivers txd, txp and receiver rxd are also tested. the following is a brief summary of the ieee 1149.1 compatible test functions implemented in the pcnet-32 controller. boundary scan circuit the boundary scan test circuit requires four pins (tck, tms, tdi and tdo), defined as the test access port (tap). it includes a finite state machine (fsm), an in- struction register, a data register array, and a power-on reset circuit. internal pull-up resistors are provided for the tdi, tck, and tms pins. the tck pin must not be left unconnected. the boundary scan circuit remains active during sleep. tap fs m the tap engine is a 16-state fsm, driven by the test clock (tck) and the test mode select (tms) pins. this fsm is in its reset state at power-up or after h_reset. an independent power-on reset circuit is provided to ensure the fsm is in the test_logic_reset state at power-up. supported instructions in addition to the minimum ieee 1149.1 requirements (bypass, extest, and sample instructions), three additional instructions (idcode, tribyp and setbyp) are provided to further ease board-level testing. all unused instruction codes are reserved. see table 28 for a summary of supported instructions. instruction register and decoding logic after h_reset or s_reset or stop, the idcode instruction is always invoked. the decoding logic gives signals to control the data flow in the data registers according to the current instruction. boundary scan register (bsr) each bsr cell has two stages. a flip-flop and a latch are used for the serial shift stage and the parallel output stage, respectively. table 28. ieee 1149.1 supported instruction summary there are four possible operation modes in the bsr cell: other data register 1) bypass reg (1 bit) 2) dev id reg (32 bits) 3) inscan0 this is an internal scan path for amd internal testing use. eadi (external address detection interface) this interface is provided to allow external address filtering. it is selected by setting the eadisel bit in instruction name description selected data reg mode instruction code extest external test bsr test 0000 idcode id code inspection id reg normal 0001 sample sample boundary bsr normal 0010 tribyp force tristate bypass normal 0011 setbyp control boundary to 1/0 bypass test 0100 bypass bypass scan bypass normal 1111 1 capture 2shift 3 update 4 system function bits 31 ? 28: version bits 27 ? 12: part number (0010 0100 0011 0000) bits 11 ? 1: manufacturer id. the 11 bit manufacturer id code for amd is 00000000001 according to jedec publication 106-a. bit 0: always a logic 1
AM79C965A 101 bcr2 to a one. this feature is typically utilized for terminal servers, bridges and/or router products. the eadi interface can be used in conjunction with external logic to capture the packet destination address from the serial bit stream as it arrives at the pcnet-32 controller, compare the captured address with a table of stored addresses or identifiers, and then determine whether or not the pcnet-32 controller should accept the packet. the eadi interface outputs are delivered directly from the nrz decoded data and clock recovered by the manchester decoder or input into the gpsi port. this allows the external address detection to be performed in parallel with frame reception and address comparison in the mac station address detection (sad) block of the pcnet-32 controller. srdclk is provided to allow clocking of the receive bit stream into the external address detection logic. srdclk runs only during frame reception activity. once a received frame commences and data and clock are available from the decoder, the eadi logic will monitor the alternating ( ? 1,0 ? ) preamble pattern until the two ones of the start frame delimiter ( ? 1,0,1,0,1,0,1,1 ? ) are detected, at which point the sf/ bd output will be driven high. the sf/bd signal will initially be low. the assertion of sf/bd is a signal to the external address detection logic that the sfd has been detected and that subsequent srdclk cycles will deliver packet data to the external logic. therefore, when sf/bd is asserted, the external address matching logic should begin de- serialization of the srd data and send the resulting destination address to a content addressable memory (cam) or other address detection device. in order to reduce the amount of logic external to the pcnet-32 controller for multiple address decoding sys- tems, the sf/bd signal will toggle at each new byte boundary within the packet, subsequent to the sfd. this eliminates the need for externally supplying byte framing logic. the ear pin should be driven low by the external ad- dress comparison logic to reject a frame. if an address match is detected by internal address comparison with either the physical or logical or broadcast address contained within the pcnet-32 controller, then the frame will be accepted regardless of the condition of ear . internal address match is disabled when prom (csr15[15]) = 0, drcvbc (csr15[14]) = 1, drcvpa (csr15[13]) = 1 and logical address filter (csr8 ? csr11) = 0. when the eadisel bit of bcr2 is set to a one and internal address match is disabled, then all incoming frames will be accepted by the pcnet-32 controller, un- less the ear pin becomes active during the first 64 bytes of the frame (excluding preamble and sfd). this allows external address lookup logic approximately 58 byte times after the last destination address bit is avail- able to generate the ear signal, assuming that the pcnet-32 controller is not configured to accept runt packets. ear will be ignored after 64 byte times after the sfd. the frame will be accepted if ear has not been asserted before this time. if runt packet accept is enabled, then the ear signal must be generated prior to the receive message completion, if packet rejection is to be guaranteed. runt packet sizes could be as short as 12 byte times (assuming 6 bytes for source address, 2 bytes for length, no data, 4 bytes for fcs) after the last bit of the destination address is available. ear must have a pulse width of at least 150 ns. when the eadisel bit of bcr2 is set to a one and the prom bit of the mode register is set to a one, then all incoming frames will be accepted by the pcnet-32 controller, regardless of any activity on the ear pin. the eadi outputs continue to provide data throughout the reception of a packet. this allows the external logic to capture packet header information to determine protocol type, inter-networking information, and other useful data. the eadi interface will operate as long as the strt bit in csr0 is set, even if the receiver and/or transmitter are disabled by software (dtx and drx bits in csr15 are set). this configuration is useful as a semi-power- down mode in that the pcnet-32 controller will not per- form any power-consuming dma operations. however, external circuitry can still respond to ? control ? frames on the network to facilitate remote node control. table 29 summarizes the operation of the eadi interface. table 29. eadi operations prom ear required timing received messages 1 x no timing requirements all received frames 0 1 no timing requirements all received frames 0 0 low for 150 ns within 512 bits after sfd pcnet-32 controller internal physical and logical address matches
102 AM79C965A general purpose serial interface (gpsi) the pcnet-32 controller is capable of providing a purely digital network interface in the form of the general purpose serial interface. this interface matches the functionality provided by earlier amd network controller products, such as the am7990 lance, am79c90 c-lance, am79c900 ilacc controller, am79c940 mace controller, and am79c960 pcnet-isa controller. the gpsi interface is selected through the portsel bits of the mode register (csr15) and enabled through the tstshdw bits of bcr18 (bits 3 and 4) or enabled through the gpsien bit in csr124 (bit 4). the possible settings to invoke the gpsi mode are shown in table 30. table 30. gpsi mode selection note that the tstshdw bit values are only active when pvalid is true. the gpsi interface is multiplexed through 7 of the upper 8 address bits of the system bus interface. therefore, applications that require the use of the gpsi interface will be limited to the use of only 24 address bits (a[23] through a[2] plus the byte enables, which decode into two effective address bits). in order to prevent the pcnet-32 controller from inter- preting the gpsi signals as address bits during the software relocatable mode and during slave accesses, the 24-bit software relocatable mode address 24 mode and the i/o address width 24 mode of the pcnet-32 controller must be invoked. note that if software relocatable mode is invoked, then pvalid must have been set to zero, and, therefore, the gpsi mode is not active and therefore, the software relocatable mode might assume that all 30 address bits are visible. but in a system that uses gpsi mode, the gpsi signals would likely all be hard-wired to the address pins, and, therefore, even though the device never made it into gpsi mode, it will still not be able to see the upper address bits. therefore, it is always recommended that srma24 mode be invoked as described in the next paragraph: software relocatable mode address 24 mode is in- voked by connecting the led2/srdclk pin to a low level during h_reset and during the execution of the software relocation operation. when the led2/ srdclk pin is low during h_reset and software relocatable mode, then the device will be programmed to use 24 bits of addressing while snooping accesses on the bus during software relocatable mode; in this case, the pcnet-32 controller will assume that bits a[31] through a[24] are matched at all times, regardless of the actual values on these pins. i/o address width 24 mode is invoked by writing a one to the ioaw24 bit of bcr21 (bit 8 of bcr21). this can be accomplished safely in either of two ways: 1. a software relocation operation can write a one to bcr21, bit 8. 2. a read of the eeprom contents can write a one to bcr21, bit 8, if the eeprom contents are cor- rectly programmed. these two methods do not require a slave access to the pcnet-32 controller, and therefore may be per- formed in a system in which the gpsi signals are per- manently connected to the a[31] through a[23] pins (assuming srma24 mode is invoked via the led2/ srdclk pin to use method 1). the pcnet-32 controller upper address pins are recon- figured during gpsi mode to the functions listed in table 31. note that pin number 143 (a24) has no equivalent gpsi function and should be left unconnected when gpsi mode is enabled. gpsi signal functions are described in the pin descrip- tion section under the gpsi subheading. at the time that gpsi mode is entered, the internal mac clock is switched from a xtal1-derived clock to a clock derived from the stdclk input. the stdclk input determines the network data rate and therefore must meet frequency and stability specifications. tstshdw value (bcr18 [4:3]) pvalid (bcr19 [15]) gpsien (csr124[4]) operating mode 00 1 0 normal operating mode 10 1 x gpsi mode 01 1 0 reserved 11 1 x reserved xx 0 0 normal operating mode xx 0 1 gpsi mode
AM79C965A 103 table 31. gpsi pin configurations note that the xtal1 input must always be driven with a clock source, even if gpsi mode is to be used. it is not necessary for the xtal1 clock to meet the normal frequency and stability requirements in this case. any frequency between 8 mhz and 20 mhz is acceptable. however, voltage drive requirements do not change. when gpsi mode is used, xtal1 must be driven for several reasons: 1. the default pin reset configuration for the pcnet-32 controller is ? aui port selected, ? and until gpsi mode is selected, the xtal1 clock is needed for some internal operations (namely, reset). 2. the xtal1 clock drives the eeprom read opera- tion, regardless of the network mode selected. 3. the xtal1 clock determines the length of a reset register read operation, regardless of the network mode selected (due to the internal reset caused by the read). note that if a clock slower than 20 mhz is provided at the xtal1 input, the time needed for eeprom read and reset register read operations will increase. power savings modes the pcnet-32 controller supports two hardware power savings modes. both are entered by driving the sleep pin low. in coma mode, the pcnet-32 controller will go into a deep sleep with no means to use the network to auto- matically wake itself up. coma mode is enabled when the awake bit in bcr2 is reset. coma mode is the de- fault power down mode. when coma mode is invoked, the t-mau circuitry will go into power down mode. the system bus interface will be floated and inactive during coma mode. ldev and the selected interrupt pin will be driven to inactive levels. while in coma mode, if the pcnet-32 controller is configured for a daisy chain (holdi and hldao or lreqi and lgnto signals have been selected with the jtagsel pin), then the daisy chain signal lreqi /holdi will be passed directly to lreq /hold and the system arbitration signal lgnt / hlda will be passed directly to the daisy- chain signal lgnto /hldao. in snooze mode, enabled by setting the awake bit in bcr2 and driving the sleep pin low, the t-mau re- ceive circuitry will remain enabled even while the sleep pin is driven low. the lnkst output will also continue to function, indicating a good 10base-t link if there are link beat pulses or valid frames present. this lnkst pin can be used to drive an led and/or external hardware that directly controls the sleep pin of the pcnet-32 controller. this configuration effectively wakes the system when there is any activity on the 10base-t link. auto wake mode can be used only if the t-mau is the selected network port. link beat pulses are not transmitted during auto-wake mode. the system bus interface will be floated and inactive during snooze mode. ldev and the selected interrupt pin will be driven to inactive levels. while in snooze mode, if the pcnet-32 controller is configured for a daisy chain (holdi and hldao or lreqi and lgnto signals have been selected with the jtagsel pin), then the daisy chain signal lreqi /holdi will be passed directly to lreq /hold and the system arbitration signal lgnt /hlda will be passed directly to the daisy-chain signal lgnto /hldao. if the hold output is active when the sleep pin is as- serted, then the pcnet-32 controller will wait until the hlda input is asserted. then the pcnet-32 controller will de-assert the hold pin and finally, it will internally enter either the coma or snooze sleep mode. before the sleep mode is invoked, the pcnet-32 controller will perform an internal s_reset. this s_reset operation will not affect the values of the bcr registers. the sleep pin should not be asserted during power supply ramp-up. if it is desired that sleep be asserted at power up time, then the system must delay the assertion of sleep until three bclk cycles after the completion of a valid pin reset operation. gpsi function gpsi i/o type lance gpsi pin ilacc gpsi pin pcnet-32/ pcnet-isa gpsi pin pcnet-32 pin number pcnet-32 normal pin function transmit data o tx txd txdat 132 a31 transmit enable o tena rts txen 133 a30 transmit clock i tclk txc stdclk 134 a29 collision i clsn cdt clsn 137 a28 receive clock i rclk rxc srdclk 140 a26 receive data i rx rxd rxdat 141 a25
104 AM79C965A software access i/o resources pcnet-32 controller i/o resource mapping the pcnet-32 controller has several i/o resources. these resources use 32 bytes of i/o space that begin at the pcnet-32 controller i/o base address. the pcnet-32 controller allows two modes of slave access. word i/o mode treats all pcnet-32 controller i/o resources as two-byte entities spaced at two-byte ad- dress intervals. double word i/o mode treats all pcnet-32 controller i/o resources as four-byte entities spaced at four-byte address intervals. the selection of wio or dwio mode is accomplished by one of two ways: 1. h_reset function. 2. the pcnet-32 controller i/o mode setting will default to wio after h_reset (i.e. dwio = 0). 3. automatic determination of dwio mode due to double-word i/o write access to offset 10h. dwio is automatically programmed as active when the system attempts a double word write access to offset 10h of the pcnet-32 controller i/o space. note that this space corresponds to rdp, regardless of whether dwio or wio mode has been programmed. the power up h_reset value of dwio will be zero, and this value will be maintained until a double word access is performed to pcnet-32 controller i/o space. therefore, if dwio mode is desired, it is imperative that the first access to the pcnet-32 controller be a double word write access to offset 10h. alternatively, if dwio mode is not desired, then it is im- perative that the software never executes a double word write access to offset 10h of the pcnet-32 controller i/o space. once the dwio bit has been set to a one, only a h_reset can reset it to a zero. the dwio mode setting is unaffected by s_reset or the stop bit. wio i/o resource map when the pcnet-32 controller i/o space is mapped as word i/o, then the resources that are allotted to the pcnet-32 controller occur on word boundaries that are offset from the pcnet-32 controller i/o base address as shown in table 32. table 32. word i/o mapping when pcnet-32 controller i/o space is word mapped, all i/o resources fall on word boundaries and all i/o re- sources are word quantities. however, while in word i/ o mode, address prom accesses may also be accessed as individual bytes on byte addresses. attempts to write to any pcnet-32 controller i/o re- sources (except to offset 10h, rdp) as 32 bit quantities while in word i/o mode are illegal and may cause unexpected reprogramming of the pcnet-32 controller control registers. attempts to read from any pcnet-32 controller i/o resources as 32-bit quantities while in word i/o mode are illegal and will yield undefined values. an attempt to write to offset 10h (rdp) as a 32 bit quantity while in word i/o mode will cause the pcnet-32 controller to exit wio mode and immediately thereafter, to enter dwio mode. accesses to non-word address boundaries are not allowed while in wio mode, with the exception of the aprom locations. the pcnet-32 controller may or may not produce an ldev and a rdy signal in response to such accesses, but data will be undefined. accesses of non-word quantities to any i/o resource are not allowed while in wio mode, with the exception of byte reads from the aprom locations. pcnet-32 controller may or may not produce an ldev and will not produce a rdy signal in response to such accesses, but data will be undefined. the vendor specific word (vsw) is not implemented by the pcnet-32 controller. this particular i/o address is reserved for customer use and will not be used by future amd ethernet controller products. if more than offset (hex) no. of bytes register 0 2 address prom 2 2 address prom 4 2 address prom 8 2 address prom a 2 address prom c 2 address prom e 2 address prom 10 2 rdp 12 2 rap (shared by rdp and bdp) 14 2 reset register 16 2 bdp 18 2 vendor specific word 1a 2 reserved 1c 2 reserved 1e 2 reserved
AM79C965A 105 one vendor specific word is needed, it is suggested that the vsw location should be divided into a vsw register address pointer (vswrap) at one location (e.g. vswrap at byte location 18h) and a vsw data port (vswdp) at the other location (e.g. vswdp at byte location 19h). alternatively, the system may capture rap data accesses in parallel with the pcnet-32 controller and therefore share the pcnet-32 controller rap to allow expanded vsw space. pcnet-32 controller will not respond to access to the vsw i/o address. dwio i/o resource map when the pcnet-32 controller i/o space is mapped as double word i/o, then all of the resources that are allotted to the pcnet-32 controller occur on double word boundaries that are offset from the pcnet-32 controller i/o base address as shown in table 33. table 33. double word i/o mapping when pcnet-32 controller i/o space is double word- mapped, all i/o resources fall on double word boundaries. address prom resources are double word quantities in dwio mode. rdp, rap and bdp contain only two bytes of valid data. the other two bytes of these resources are reserved for future use. the reserved bits must be written as zeros, and when read, are considered undefined . accesses to non-double word address boundaries are not allowed while in dwio mode. the pcnet-32 controller may or may not produce an ldev and a rdy signal in response to such accesses, but data will be undefined. accesses of less than 4 bytes to any i/o resource are not allowed while in dwio mode (i.e. pcnet-32 controller will not respond to such accesses. pcnet-32 controller will not produce an ldev and a rdy signal in response to such accesses), but data will be undefined. a double word write access to the rdp offset of 10h will automatically program dwio mode. note that in all cases when i/o resource width is defined as 32 bits, the upper 16 bits of the i/o resource is reserved and written as zeros and read as undefined, except for the aprom locations and csr88. dwio mode is exited by asserting the reset pin. as- sertion of s_reset or setting the stop bit of csr0 will have no effect on the dwio mode setting. i/o space comments the following statements apply to both wio and dwio mapping: the rap is shared by the rdp and the bdp. the pcnet-32 controller does not respond to any ad- dresses outside of the offset range 0h-17h when dwio = 0 or 0h-1f when dwio = 1. i/o offsets 18h through 1fh are not used by the pcnet-32 controller when programmed for dwio = 0 mode. locations 1ah through 1fh are reserved for future amd use and therefore should not be implemented by the user if upward compatibility to future amd devices is desired. note that address prom accesses do not directly ac- cess the eeprom, but are redirected to a set of shadow registers on board the pcnet-32 controller that contain a copy of the eeprom contents that was obtained during the automatic eeprom read operation that follows the reset operation. pcnet-32 controller i/o base address the i/o base address registers (bcr16 and bcr17) will reflect the current value of the base of the pcnet-32 controller i/o address space. bcr16 contains the lower 16 bits of the 32-bit i/o base address for the pcnet-32 controller. bcr17 contains the upper 16 bits of the 32-bit i/o base address for the pcnet-32 controller. this set of registers is both readable and writable by the host. the value contained in these registers is affected through three means: 1. immediately following the h_reset operation, the i/o base address will be determined by the eeprom read operation. during this operation, the i/o base address register will become pro- grammed with the value of the i/o base address field of the eeprom. 2. if no eeprom exists, or if an error is detected in the eeprom data, then the pcnet-32 controller will enter software relocatable mode . while in this mode, the pcnet-32 controller will not respond to any i/o accesses directly. however, the pcnet-32 controller will snoop accesses on the system bus. when the pcnet-32 controller detects a spe- cific sequence of four write accesses to i/o address 378h, then the pcnet-32 controller will assume that the software is attempting to relocate the pcnet-32 controller. on eight subsequent write accesses to i/o address 378h, the pcnet-32 controller will accept the data on the bus as a new i/o base address and other programming infor- offset (hex) no. of bytes register 0 4 address prom 4 4 address prom 8 4 address prom c 4 address prom 10 4 rdp 14 4 rap (shared by rdp and bdp) 18 4 reset register 1c 4 bdp
106 AM79C965A mation, and it will leave software relocatable mode. at this point, the pcnet-32 controller will begin responding to i/o accesses directly. while the pcnet-32 controller is in software relocatable mode, if the led2 pin is pulled low, then the srma24 mode is entered and only the lower 24 bits of address are matched to 378h. 3. the i/o base address registers may be directly written to, provided that the pcnet-32 controller is not currently in the software relocatable mode. software relocation of i/o resources in order to allow for jumperless ethernet implementa- tions, the i/o base address register value will be auto- matically altered by the pcnet-32 controller during an eeprom read operation. in this case, the value of the i/o base address for the pcnet-32 controller will be di- rectly dependent upon the value of the bcr16 and bcr17 fields that are stored in the eeprom. if no eeprom exists and an eeprom read is attempted, then the pcnet-32 controller will enter software relocatable mode. software relocatable mode while in software relocatable mode, the pcnet-32 controller will not respond to any access on the system bus. however, the pcnet-32 controller will snoop any i/ o write accesses that may be present. the pcnet-32 controller will watch for a specific sequence of accesses in order to determine a value for the i/o base address registers. specifically, the pcnet-32 controller will wait for a sequence of 12 uninterrupted byte-write accesses to i/o address 378h. the 12 byte-write accesses must occur without inter- vening i/o accesses to other locations, and they must contain the data in the order shown in table 34. be0 is required to be active during all software relocatable mode snoop accesses. be3 ? be1 may have any value during software relocatable mode snoop accesses. table 34. i/o base address write sequence in srm *note that d[31:8] are don ? t care, since the accesses are required to one byte in width. immediately following the 12th write access in the se- quence, the pcnet-32 controller will leave software relocatable mode, and it will then respond to i/o ac- cesses to the 32 bytes of i/o space that begins at the i/o base address location. note that in figure 33 (software relocatable mode snoop accesses), the data that is accepted by the pcnet-32 controller will always be the data that is presented during the first t2 cycle, regardless of the state of the rdyrtn input. since the pcnet-32 controller will not respond to the software relocatable mode snoop accesses, some other device must drive the rdyrtn signal during these accesses. in a typical pc environment, these i/o accesses will be directed toward the data port of a parallel port. therefore, the rdyrtn will typically be generated by the parallel port controller. in systems in which the parallel port device does not exist, or is at a different location, the 378h accesses will go unclaimed by any device on the local bus or on the expansion bus. in this case, the chipset will typically terminate the access by providing the rdyrtn signal after some access-time-out counter has elapsed. access no. i/o address (hex) d[7:0]* (hex) ascii inter ? pretation 1 0000 0378 41 a 2 0000 0378 4d m 3 0000 0378 44 d 4 0000 0378 01 na 5 0000 0378 iobasel[7:0] na 6 0000 0378 iobasel[15:8] na 8 0000 0378 iobaseu[15:8] na 9 0000 0378 bcr2[7:0] na 10 0000 0378 bcr2[15:8] na 11 0000 0378 bcr21[7:0] na 12 0000 0378 bcr21[15:8] na
AM79C965A 107 figure 33. software relocatable mode snoop cycles the i/o base address register value may be altered by a direct write to bcr16 and bcr17 by the host. slave accesses to the pcnet-32 controller should not be performed until both bcr16 and bcr17 have been written with new values. an intermediate i/o base address will be created when only one of the two registers has been written. therefore, this method of i/o base address reassignment is not recommended. i/o register access all i/o resources are accessed with similar i/o bus cycles. i/o accesses to the pcnet-32 controller begin with a valid ads strobe and an address on the a[31:2] lines that falls within the i/o space of the pcnet-32 controller. the pcnet-32 controller i/o space will be determined by the i/o base address registers. eeprom read operations will determine the value of the i/o base address registers. the pcnet-32 controller will respond to an access to its i/o space by asserting the ldev signal and eventually, by asserting the rdy signal. typical i/o access times are 6 or 7 bclk periods. the ads t1 bclk t2 t2 t1 t2 t1 t2 a4 a31, m/io, d/c a2 a3, be1 be3 rdyrtn w/r brdy blast d8 d31 t2 t2 ti t1 don't care i/o address 378h i/o address 378h i/o address 378h i/o address 378h t2 pcnet-32 controller latches snoop data on this edge pcnet-32 controller latches snoop data on this edge pcnet-32 controller latches snoop data on this edge be0 i/o address 378h i/o address 378h i/o address 378h d0 d7 srm data srm data srm data i/o address 378h 18219-40
108 AM79C965A exact number of clock cycles for any particular access will depend upon the relative phases of the signal on the bclk pin and the internal clock that is used to drive the pcnet-32 controller buffer management unit. since the pcnet-32 controller buffer management unit operates on a clock that is a 2 version of the interface clock, it possible for the buffer management unit to introduce one or more bclk wait delays to allow for synchronization of the two state machines before proceeding with the access. the pcnet-32 buffer management unit uses bclk 2, so the maximum number of bclk cycles needed to synchronize the biu and buffer management units is one bclk period. aprom access the aprom space is a convenient place to store the value of the ieee station address. this space is auto- matically loaded from the serial eeprom, if an eeprom is present. its contents have no effect on the operation of the controller. the software must copy the station address from the aprom space to the initialization block or to csr12 ? csr14 in order for the receiver to accept unicast frames directed to this station. when programmed for wio mode, any byte or word address from an offset of 0h to an offset of fh may be read. an appropriate byte or word of aprom contents will be delivered by the pcnet-32 controller in response to accesses that fall within the aprom range of 0h to fh. when programmed for dwio mode, only double word addresses from an offset of 0h to an offset of fh may be read. an appropriate double word of aprom contents will be delivered in response to accesses that fall within the aprom range of 0h to fh. reads of non-double-word quantities are not allowed in dwio mode, even though such an access may be properly aligned to a double word address boundary. write access to any of the aprom locations is allowed, but only 4 bytes on double-word boundaries in dwio mode or 2 bytes on word boundaries in wio mode. the iesrwe bit (see bcr2) must be set in order to enable such a write. only the pcnet-32 controller on-board ieee shadow registers are modified by writes to aprom locations. the eeprom is unaffected by writes to aprom locations. note that the aprom locations occupy 16 bytes of space, yet the ieee station address requirement is for 6 bytes. the 6 bytes of ieee station address occupy the first 6 locations of the aprom space. the next six bytes are reserved. bytes 12 and 13 should match the value of the checksum of bytes 1 through 11 and 14 and 15. bytes 14 and 15 should each be ascii ? w ? (57 h) if compatibility to amd driver software is desired. rdp access (csr register space) rdp = register data port. the rdp is used with the rap to gain access to any of the pcnet-32 controller csr locations. access to any of the csr locations of the pcnet-32 controller is performed through the pcnet-32 controller ? s register data port (rdp). in order to access a particular csr location, the register address port (rap) should first be written with the appropriate csr address. the rdp now points to the selected csr. a read of the rdp will yield the selected csr ? s data. a write to the rdp will write to the selected csr. when programmed for wio mode, the rdp has a width of 16 bits, hence, all csr locations have 16 bits of width. note that when accessing rdp, the upper two bytes of the data bus will be undefined since the byte masks will not be active for those bytes. if dwio mode has been invoked, then the rdp has a width of 32 bits, hence, all csr locations have 32 bits of width and the upper two bytes of the data bus will be active, as indicated by the byte mask. in this case, note that the upper 16 bits of all csr locations (except csr88) are reserved and written as zeros and read as undefined values. therefore, during rdp write opera- tions in dwio mode, the upper 16 bits of all csr loca- tions should be written as zeros. rap access rap = register address port. the rap is used with the rdp and with the bdp to gain access to any of the csr and bcr register locations, respectively. the rap contains the address pointer that will be used by an access to either the rdp or bdp. therefore, it is necessary to set the rap value before accessing a specific csr or bcr location. once the rap has been written with a value, the rap value remains unchanged until another rap write occurs, or until an h_reset or s_reset occurs. rap is set to all zeros when an h_reset or s_reset occurs. rap is unaffected by the stop bit. when programmed for wio mode, the rap has a width of 16 bits. note that when accessing rap, the lower two bytes of the data bus will be undefined since the byte masks will not be active for those bytes when programmed for dwio mode, the rap has a width of 32 bits. in dwio mode, the upper 16 bits of the rap are reserved and written as zeros and read as un- defined. these bits should be written as zeros. bdp access (bcr register space) bdp = bus configuration register data port. the bdp is used with the rap to gain access to any of the pcnet-32 controller bcr locations. access to any of the bcr locations of the pcnet-32 controller is performed through the pcnet-32
AM79C965A 109 controller ? s bcr data port (bdp). in order to access a particular bcr location, the register address port (rap) should first be written with the appropriate bcr address. the bdp now points to the selected bcr. a read of the bdp will yield the selected bcr ? s data. a write to the bdp will write to the selected bcr. when programmed for wio mode, the bdp has a width of 16 bits, hence, all bcr locations have 16 bits of width in wio mode. note that when operating in wio mode, the upper two bytes of the data bus will be undefined since the byte mask will not be active for those bytes. if dwio mode has been invoked, then the bdp has a width of 32 bits, hence, all bcr locations have 32 bits of width and the upper two bytes of the data bus will be active, as indicated by the byte mask. in this case, note that the upper 16 bits of all bcr locations are reserved and written as zeros and read as undefined. therefore, during bdp write operations in dwio mode, the upper 16 bits of all bcr locations should be written as zeros. reset register (s_reset) a read of the reset register creates an internal s_reset pulse in the pcnet-32 controller. this read access cycle must be 16 bits wide in wio mode and 32 bits wide in dwio mode. the internal s_reset pulse that is generated by this access is different from both the assertion of the hardware reset pin (h_reset) and from the assertion of the software stop bit. specifically, the reset register ? s s_reset will be the equivalent of the assertion of the reset pin (h_reset) assertion for all csr locations, but s_reset will have no effect at all on the bcr locations, and s_reset will not cause a de-assertion of the hold pin. the ne2100 lance based family of ethernet cards re- quires that a write access to the reset register follows each read access to the reset register. the pcnet-32 controller does not have a similar requirement. the write access is not required but it does not have any harmful effects. write accesses to the reset register will have no effect on the pcnet-32 controller. note that a read of the reset register will take longer than the normal i/o access time of the pcnet-32 controller. this is because an internal s_reset pulse will be generated due to this access, and the access will not be allowed to complete on the system bus until the internal s_reset operation has been completed. this is to avoid the problem of allowing a new i/o access to proceed while the s_reset operation has not yet completed, which would result in erroneous data being returned by (or written into) the pcnet-32 controller. the length of a read of the reset register can be as long as 128 bclk cycles when am386 mode has been selected and 64 bclk cycles when am486 mode or vesa vl-bus mode has been selected. note that a read of the reset register will not cause a de-assertion of the hold signal, if it happens to be ac- tive at the time of the read to the reset register. the hold signal will remain active until the hlda signal is synchronously sampled as asserted. following the read of the reset register, on the next clock cycle after the hlda signal is synchronously sampled as asserted, the pcnet-32 controller will de-assert the hold signal). no bus master accesses will have been performed during this brief bus ownership period. note that this behavior differs from that which occurs following the assertion of a minimum-width pulse on the reset pin (h_reset). a reset pin assertion will cause the hold signal to de-assert within six clock cycles following the assertion. in the reset pin case, the pcnet-32 controller will not wait for the assertion of the hlda signal before de-asserting the hold signal. vendor specific word this i/o offset is reserved for use by the system de- signer. the pcnet-32 controller will not respond to ac- cesses directed toward this offset. reserved i/o space these locations are reserved for future use by amd. the pcnet-32 controller does not respond to accesses directed toward these locations, but future amd prod- ucts that are intended to be upward compatible with the pcnet-32 controller may decode accesses to these lo- cations. therefore, the system designer may not utilize these i/o locations.
110 AM79C965A hardware access pcnet-32 controller master accesses the particular signals involved in a pcnet-32 controller bus master transfer depends upon the bus mode that has been selected. there are two bus modes to choose from. they are: am486 32-bit mode vesa vl-bus mode complete descriptions of the signals involved in bus master transactions for each mode may be found in the pin description section of this document. timing dia- grams for master accesses may be found in the block description section for the bus interface unit. this sec- tion simply lists the types of master accesses that will be performed by the pcnet-32 controller with respect to data size and address information. the pcnet-32 controller will support master accesses only to 32-bit peripherals in am486 environments. the pcnet-32 controller does not support master accesses to 16-bit peripherals in the 486 local bus mode. the pcnet-32 controller will support master accesses to either 32-bit or 16-bit peripherals in vesa vl-bus mode. support of master accesses to 16-bit peripherals in vesa vl-bus mode is provided through the lbs16 input pin. the pcnet-32 controller is not compatible with 8-bit systems, since there is no mode that supports pcnet-32 controller accesses to 8-bit peripherals. table 35 describes all possible bus master accesses that the pcnet-32 controller will perform. the right- most column lists all operations that may execute the given access. table 35. master accesses *cases marked with an asterisk represent extreme boundary conditions that are the result of programming one- and two-byte buffer sizes, and therefore will not be seen under normal circumstances. note that all pcnet-32 controller master read operations will always activate all byte enables. (note the exception, when lbs16 has been asserted in vl- bus mode, requiring a second access. in all lbs16 cases, the second access (if required) will have be1 and be0 disabled. therefore, no one-, two- or three- byte read operations are indicated in the table. in the instance where a transmit buffer pointer address begins on a non-double-word boundary, the pointer will be truncated to the next double-word boundary address that lies below the given pointer address and the first read access from the transmit buffer will be indicated on the byte enable signals as a four-byte read from this address. any data from byte lanes that lie outside of the boundary indicated by the buffer pointer will be discarded inside of the pcnet-32 controller. access r/w be3 ? be0 possible instance 4-byte read rd 0000 descriptor read or initialization block read or transmit data buffer read 4-byte write wr 0000 descriptor write or receive data buffer write 3-byte write wr 1000 receive data buffer write 3-byte write wr 0001 receive data buffer write 2-byte write wr 1100 receive data buffer write 2-byte write wr 1001* receive data buffer write 2-byte write wr 0011 receive data buffer write 1-byte write wr 1110 receive data buffer write 1-byte write wr 1101* receive data buffer write 1-byte write wr 1011* receive data buffer write 1-byte write wr 0111 descriptor write or receive data buffer write
AM79C965A 111 similarly, if the end of a transmit buffer occurs on a non- double-word boundary, then all byte lanes will be indicated as active by the byte enable signals, and any data from byte lanes that lie outside of the boundary indicated by the buffer pointer will be discarded inside of the pcnet-32 controller. slave access to i/o resources the pcnet-32 controller is a 32-bit peripheral device on the system bus. however, the width of individual software resources on board the pcnet-32 controller may be either 16-bits or 32-bits. the pcnet-32 controller i/o resource widths are determined by the value of the dwio bit (bcr 18, bit 7) as indicated in table 36. note that when i/o resource width is defined as 32 bits (dwio mode), the upper 16 bits of the i/o resource is reserved and written as zeros and read as undefined, except for the aprom locations . the aprom locations are the only i/o resources for which all 32 bits will have defined values. however, this is true only when the pcnet-32 controller is in dwio mode. configuring the pcnet-32 controller for dwio mode is accomplished whenever there is any attempt to perform a 32-bit write access to the rdp location (offset 10h). see the dwio section for more details. table 37 describes all possible bus slave accesses that may be directed toward the pcnet-32 controller. (i.e. the pcnet-32 controller is the slave device during the transfer.) the four byte columns (d31 ? d24, d23 ? d16, d15 ? d8, d7 ? d0) indicate the value on the data bus during the access. table 36. i/o resource access dwio setting pcnet-32 controller i/o resource width example application dwio = 0 16-bit existing pcnet-isa driver that assumes 16-bit i/o mapping and 16-bit resource widths dwio = 1 32-bit new drivers written specifically for the pcnet-32 controller
112 AM79C965A table 37. slave accesses data = indicates the position of the active bytes. copy = indicates the positions of copies of the active bytes. undef = indicates byte locations that are undefined during the transfer. eeprom microwire access the pcnet-32 controller contains a built-in capability for reading and writing to an external eeprom. this built-in capability consists of a microwire interface for direct connection to a microwire compatible eeprom, an automatic eeprom read feature, and a user- programmable register that allows direct access to the microwire interface pins. automatic eeprom read operation shortly after the de-assertion of the reset pin, the pcnet-32 controller will read the contents of the eeprom that is attached to the microwire interface.the automatic eeprom read begins with eecs being asserted approximately 2.5 eesk periods following the de-assertion of the reset pin. because of this automatic-read capability of the pcnet-32 controller, an eeprom can be used to program many of the features of the pcnet-32 controller at power-up, allowing system-dependent configuration information to be stored in the hardware, instead of inside of operating code. pcnet-32 controller interrupt pins will be floated during h_reset and will remain floated until either the eeprom has been successfully read, or, following an eeprom read failure, a software relocatable mode sequence has been successfully executed. if an eeprom exists on the microwire interface, the pcnet-32 controller will read the eeprom contents at the end of the h_reset operation. the eeprom contents will be serially shifted into a temporary register and then sent to various register locations on board the pcnet-32 controller. system bus interaction will not occur during the eeprom read operation after h_reset, since h_reset will put the pcnet-32 controller into a state that will not recognize any i/o accesses and the pcnet-32 controller will not yet be at an operating point that requires it to request the bus for bus mastering. thirty-four bytes of the eeprom are set aside for pcnet-32 configuration programming and 2 bytes of the eeprom are set aside for user programming of logic that is external to the pcnet-32 controller and may or may not be pertinent to the operation of the pcnet-32 controller within the system. the user may gain access to the eeprom data by snooping the pcnet-32 controller automatic read operation. logic may be attached to the eeprom interface to snoop the entire eeprom read operation using the microwire signals directly, or a simpler scheme may be invoked by taking advantage of an additional signal provided by the pcnet-32 controller (i.e. the shfbusy signal). a checksum verification is performed on the data that is read from the eeprom. if the checksum verification r/w be3 ? be0 d31 ? d24 d23 ? d16 d15 ? d8 d7 ? d0 comments rd 0000 data data data data double word access to double word address, e.g. 300, 30c, 310 (dwio mode only) rd 1100 undef undef data data wio mode only: word access to even word address, e.g. 300, 30c, 310 rd 0011 data data copy copy wio mode only: word access to odd word address, e.g. 302, 30e, 312 rd 1110 undef undef undef data wio mode aprom read only: byte access to lower byte of even word address, e.g. 300, 304 rd 1101 undef undef data undef wio mode aprom read only: byte access to upper byte of even word address, e.g. 301, 305 rd 1011 undef data undef copy wio mode aprom read only: byte access to lower byte of odd word address, e.g. 302, 306 rd 0111 data undef copy undef wio mode aprom read only: byte access to upper byte of odd word address, e.g. 303, 307 wr 0000 data data data data double word access to double word address, e.g. 300, 30c, 310 (dwio mode only) wr 1100 undef undef data data wio mode only: word access to even word address, e.g. 300, 30c, 310 wr 0011 data data undef undef wio mode only: word access to odd word address, e.g. 302, 30e, 312 2.5 t 42 ()
AM79C965A 113 of the eeprom data fails, then at the end of the eeprom read sequence, the pcnet-32 controller will force all eeprom-programmable register locations back to their h_reset default values and then the pcnet-32 controller will enter software relocatable mode. the 8-bit checksum for the entire 36 bytes of the eeprom should be ffh. in the event of a checksum failure, software relocatable mode is entered (pcnet-32 controller begins snooping for a 12-byte sequence) within 1 eesk period following the de- assertion of eecs . if the absence of an eeprom has been signaled by the eesk/led1/sfbd pin at the time of the automatic read operation, then the pcnet-32 controller will recognize this condition and will abort the automatic read operation and reset both the pread and pvalid bits in bcr19. at this point, the pcnet-32 controller will enter the software relocatable mode, and the eeprom-programmable registers will be assigned their h_reset default values. software relocatable mode is entered (pcnet-32 controller begins snooping for 12-byte sequence) within 2.5 eesk periods following the de-assertion of the reset pin when absence of an eeprom is signalled by the eesk/ledi sfbd pin. if the user wishes to modify any of the configuration bits that are contained in the eeprom, then the 7 com- mand, data and status bits of bcr19 can be used to write to the eeprom. after writing to the eeprom, the host should set the pread bit of bcr19. this action forces a pcnet-32 controller re-read of the eeprom so that the new eeprom contents will be loaded into the eeprom-programmable registers on board the pcnet-32 controller. (the eeprom- programmable registers may also be reprogrammed directly, but only information that is stored in the eeprom will be preserved at system power-down.) when the pread bit of bcr19 is set, it will cause the pcnet-32 controller to ignore further accesses on the system interface bus until the completion of the eeprom read operation. eeprom auto-detection the pcnet-32 controller uses the eesk/led1/sfbd pin to determine if an eeprom is present in the system. at all rising bclk edges during the assertion of the reset pin, the pcnet-32 controller will sample the value of the eesk/led1/sfbd pin. if the sampled value is a one, then the pcnet-32 controller assumes that an eeprom is present, and the eeprom read operation begins shortly after the reset pin is de- asserted. if the sampled value of eesk/led1/sfbd is a zero, then the pcnet-32 controller assumes that an external pull-down device is holding the eesk/led1/ sfbd pin low, and therefore, there is no eeprom in the system. in this case, the pcnet-32 controller will enter software relocatable mode. note that if the designer creates a system that contains an led circuit on the eesk/led1/sfbd pin but has no eeprom present, then the eeprom auto-detection function will incorrectly conclude that an eeprom is present in the system. however, this will not pose a problem for the pcnet-32 controller, since it will recognize the lack of an eeprom at the end of the read operation, when the checksum verification fails. at this point, the pcnet-32 controller will enter software relocatable mode. the real intention of the eeprom auto-detection fea- ture is to allow a user to preempt a ? good eeprom ? by temporarily resistively shorting the eesk/led1/sfbd pin to ground. this may need to be done if an add-in card containing the pcnet-32 controller and its eeprom has been programmed in one system and then later moved to a different system without also moving configuration information that indicates the i/o base address of the card. the card would power up in the second system with an unknown i/o base address if the configuration information were not carried with the card to the new system. by allowing the eesk/ led1/sfbd pin to be temporarily resistively shorted to ground, the pcnet-32 controller is fooled into believing that the eeprom does not exist, and it will enter software relocatable mode. this allows the new system to reconfigure the i/o base address of the pcnet-32 controller to a location that is compatible to the parameters of the new system. this information will then be written into the eeprom by a configuration utility through the eeprom access port (bcr19), in spite of the fact that the pcnet-32 controller believes that there is no eeprom. the resistive short to ground may now be removed, and the next power-up of the system will place the pcnet-32 controller into a i/o location that is known by this system. when the pread bit of bcr19 is set, an eeprom read operation will be performed, regardless of the value of the eesk/ led1/sfbd pin. note that the h_reset- generated eeprom read operation always obeys the eesk/ led1/sfbd indication. table 38 indicates the possible combinations of eedet and the existence of an eeprom and the resulting op- erations that are possible on the eeprom microwire interface. note that the eedet value (bcr19, bit 3) is determined from eesk/led1/sfbd pin setting, and it may be set even though there is no eeprom present. 1 t 42 () 2.5 t 42 ()
114 AM79C965A table 38. effect of eedet on eeprom operation systems without an eeprom some systems may be able to save the cost of an eeprom by storing the iso 8802-3 (ieee/ansi 802.3) station address and other configuration information somewhere else in the system. for such a system, a two step process is required. the first step will get the pcnet-32 controller into its normal operating mode within the system. the second step will load the ieee station address. the designer has several choices: 1) if the led1 and sfbd functions are not needed in the system , then the system designer may connect the eesk/led1/sfbd pin to a resistive pull-down device. this will indicate to the eeprom auto-detection function that no eeprom is present, and the pcnet-32 controller will use software relocatable mode to acquire its i/o base address and other configuration information (see the section on software relocatable mode). 2) if either of the led1 or sfbd functions is needed in the system , then the system designer will connect the eesk/led1/sfbd pin to a resistive pull-up device and the eeprom auto-detection function will incorrectly conclude that an eeprom is present in the system. however, this will not pose a problem for the pcnet-32 controller, since it will recognize the lack of an eeprom at the end of the read operation, when the checksum verification fails. at this point, the pcnet-32 controller into the software relocatable mode to acquire its i/o base address and other configuration information (see the section on software relocatable mode). in either case, following the execution of software relocatable mode, additional information, including the iso 8802-3 (ieee/ansi 802.3) station address, may be loaded into the pcnet-32 controller. note that the iesrwe bit (bit 8 of bcr2) must be set before the pcnet-32 controller will accept writes to the aprom offsets within the pcnet-32 controller i/o resources map. startup code in the system bios can perform the software relocatable mode accesses, the iesrwe bit write, and the aprom writes. if compatibility to existing driver code is desired, then it is not recommended that the iso 8802-3 (ieee/ansi 802.3) station address be loaded into the initialization block structure in memory instead of the aprom loca- tions, since existing code typically expects to find the iso 8802-3 (ieee/ansi 802.3) station address at the aprom offsets from the pcnet-32 controller i/o base address. direct access to the microwire interface the user may directly access the microwire port through the eeprom register, bcr19. this register contains bits that can be used to control the microwire interface pins. by performing an appropriate sequence of i/o accesses to bcr19, the user can effectively write to and read from the eeprom. this feature may be used by a system configuration utility to program hardware configuration information into the eeprom. eedet value (bcr19[3]) eeprom connected? result if pread is set to one result of automatic eeprom read operation following h_reset 0 no eeprom read operation is attempted. entire read sequence will occur, checksum failure will result, pvalid is reset to zero. first two eesk clock cycles are generated, then eeprom read operation is aborted and pvalid is reset to zero. 0 yes eeprom read operation is attempted. entire read sequence will occur, checksum operation will pass, pvalid is set to one. first two eesk clock cycles are generated, then eeprom read operation is aborted and pvalid is reset to zero. 1 no eeprom read operation is attempted. entire read sequence will occur, checksum failure will result, pvalid is reset to zero. eeprom read operation is attempted. entire read sequence will occur, checksum failure will result, pvalid is reset to zero. 1 yes eeprom read operation is attempted. entire read sequence will occur, checksum operation will pass, pvalid is set to one. eeprom read operation is attempted. entire read sequence will occur, checksum operation will pass, pvalid is set to one.
AM79C965A 115 eeprom-programmable registers the following registers contain configuration informa- tion that will be programmed automatically during the eeprom read operation: if the pread bit (bcr19) is reset to zero and the pvalid bit (bcr19) is reset to zero, then the eeprom read has experienced a failure and the contents of the eeprom programmable register will be set to default h_reset values. at this point, the pcnet-32 controller will enter software relocatable mode. note that accesses to the address prom i/o locations do not directly access the address eeprom itself. in- stead, these accesses are routed to a set of ? shadow ? registers on board the pcnet-32 controller that are loaded with a copy of the eeprom contents during the automatic read operation that immediately follows the h_reset operation. eeprom map the automatic eeprom read operation will access 18 words (i.e. 36 bytes) of the eeprom. the format of the eeprom contents is shown in table 39, beginning with the byte that resides at the lowest eeprom address. table 39. eeprom content 1) i/o offsets 0h ? fh address prom locations 2) bcr2 miscellaneous configuration register 3) bcr16 i/o base address lower 4) bcr17 i/o base address upper 5) bcr18 burst size and bus control register 6) bcr21 interrupt control register eeprom word addr eeprom contents byte addr byte addr msb (most significant byte) byte addr lsb (lease significant byte) 0 (lowest address) 1 2nd byte of the iso 8802-3 (ieee/ansi 802.3) station physical address for this node 0 first byte of the iso 8802-3 (ieee/ansi 802.3) station physical address for this node, where first byte refers to the first byte to appear on the 802.3 medium 1 3 4th byte of the node address 2 3rd byte of the node address 2 5 6th byte of the node address 4 5th byte of the node address 3 7 reserved location: must be 00h 6 reserved location: must be 00h 4 9 hardware id: must be 10h if compatibility to amd drivers is desired 8 driver irq: must be programmed to the system irq channel number being used if amd drivers are used. 5 b user programmable space a user programmable space 6 d msb of two-byte checksum, which is the sum of bytes 0-b and bytes e and f c lsb of two-byte checksum, which is the sum of bytes 0-b and bytes e and f 7 f must be ascii ? w ? (57h) if compatibility to amd driver software is desired e must be ascii ? w ? (57h) if compatibility to amd driver software is desired 8 11 bcr16[15:8] (i/o base address lower) 10 bcr16[7:0] (i/o base address lower) 9 13 bcr17[15:8] (i/o base address upper) 12 bcr17[7:0] (i/o base address upper) a 15 bcr18[15:8] (burst size and bus control) 14 bcr18[7:0] (burst size and bus control) b 17 bcr2[15:8] (miscellaneous configuration) 16 bcr2[7:0] (miscellaneous configuration) c 19 bcr21[15:8] (interrupt control) 18 bcr21[7:0] (interrupt control) d 1b reserved location: must be 00h 1a reserved location: must be 00h e 1d reserved location: must be 00h 1c reserved location: must be 00h f 1f checksum adjust byte for the first 36 bytes of the eeprom contents; checksum of the first 36 bytes of the eeprom should total to ffh 1e reserved location: must be 00h 10 21 reserved location: must be 00h 20 reserved location: must be 00h 11 23 user programmable byte locations 22 user programmable byte locations
116 AM79C965A note that the first bit out of any word location in the eeprom is treated as the msb of the register that is being programmed. for example, the first bit out of eeprom word location 08h will be written into bcr16[15], the second bit out of eeprom word location 08h will be written into bcr16[14], etc. there are two checksum locations within the eeprom. the first is required for the eeprom address. this checksum will be used by amd driver software to verify that the iso 8802-3 (ieee/ansi 802.3) station address has not been corrupted. the value of bytes c and d should match the 16-bit sum of bytes 0 through b and e and f. the second checksum location ? byte 1f ? is not a checksum total, but is, instead, a checksum adjustment. the value of this byte should be such that the total 8-bit checksum for the entire 36 bytes of eeprom data equals the value ffh. the checksum adjust byte is needed by the pcnet-32 controller in order to verify that the eeprom contents have not been corrupted. byte address 8h of the eeprom map contains the driver irq field. the content of this field is used by amd drivers to program the interrupt channel being used by the pcnet-32. note that the pcnet-32 interrupt pin selection is not effected by this field. the interrupt pin selection is controlled only by the appropriate bits in bcr21. the system interrupt channel associated with each of the pcnet-32 intr pins is application-depend- ent. amd drivers utilize byte location 8h of the eeprom to resolve this dependency. eeprom-programming of system logic when the user has shareable hardware resources in the system and wishes to have these resources pro- grammed at power up, the user may desire to take ad- vantage of the extra space in the eeprom that is used to configure the pcnet-32 controller in order to store the additional configuration information. the pcnet-32 controller provides a convenient means of access for the user who wishes to utilize this space. the schematic in figure 34 illustrates an example of logic that is used to generate static control signals for some programmable features of the system, where the programming information is stored on board the pcnet-32 controller ? s eeprom and the logic is to be automatically programmed after reset. note that the eecs signal pulses low during the eeprom read operation and is therefore unsuitable for use as a gate signal for the programmable logic outputs. pcnet-32 controller provides an additional signal, shfbusy, which will remain active high during the entire eeprom read operation. this signal will therefore be suitable for use as the gate of the programmable logic outputs as shown in the diagram. note that since most of the eeprom microwire interface signals are multiplexed with other pcnet-32 controller functions, it is necessary for the shfbusy pin to enable the shift path of the programmable logic, otherwise the shift path would become active when the eesk and eedo functions were operating as their alternate functions.
AM79C965A 117 figure 34. programming system logic through the pcnet-32 eeprom read operation shfbusy will be high for the entire eeprom read operation, and therefore all eeprom contents will have been shifted through the external logic before it settles on its final, programmed value. if the eeprom checksum verification fails, then the eeprom contents are assumed to be invalid, and the shfbusy signal will remain high after the completion of the eeprom read operation. this action will prevent incorrect system logic values from being driven into the system. if the eeprom checksum verification passes, then the eeprom contents are assumed to be valid, and the shfbusy signal will return to a low state after the completion of the eeprom read operation. transmit operation the transmit operation and features of the pcnet-32 controller are controlled by programmable options. transmit function programming automatic transmit features such as retry on collision, fcs generation/transmission, and pad field insertion can all be programmed to provide flexibility in the (re-) transmission of messages. disable retry on collision (drty) is controlled by the drty bit of the mode register (csr15) in the initializa- tion block. automatic pad field insertion is controlled by the apad_xmt bit in csr4. if apad_xmt is set, auto- matic pad field insertion is enabled, the dxmtfcs fea- ture is over-ridden, and the 4 byte fcs will be added to the transmitted frame unconditionally. if apad_xmt is clear, no pad field insertion will take place and runt packet transmission is possible. the disable fcs generation/transmission feature can be programmed dynamically on a frame by frame basis. see the add_fcs description of tmd1. transmit fifo watermark (xmtfw in csr80) sets the point at which the bmu requests more data from the transmit buffers for the fifo. a minimum of ? xmtfw ? empty spaces must be available in the transmit fifo before the bmu will request the system bus in order to transfer transmit packet data into the transmit fifo. transmit start point (xmtsp in csr80) sets the point when the transmitter actually attempts to transmit a frame onto the media. a minimum of ? xmtsp ? bytes must be written to the transmit fifo for the current frame before transmission of the current frame will be- gin. (when automatically padded packets are being sent, it is conceivable that the xmtsp is not reached when all of the data has been transferred to the fifo. in this case, the transmission will begin when all of the packet data has been placed into the transmit fifo.) when the entire frame is in the fifo, attempts at trans- mission of preamble will commence regardless of the reset out1 out2 out3 ffr ffr ffr r d en ck q ...up to 16 bits pcnet-32 controller eedi reset eedo eecs eesk shfbusy eeprom (93lc46) eedi reset eedo eecs eesk r d en ck q r d en ck q 18219-41
118 AM79C965A value in xmtsp. the default value of xmtsp is 10b, meaning 64 bytes full. automatic pad generation transmit frames can be automatically padded to extend them to 64 data bytes (excluding preamble). this allows the minimum frame size of 64 bytes (512 bits) for 802.3/ethernet to be guaranteed with no software intervention from the host/controlling process. setting the apad_xmt bit in csr4 enables the automatic padding feature. the pad is placed between the llc data field and fcs field in the 802.3 frame (see figure 35). fcs is always added if the frame is padded, regardless of the state of dxmtfcs. the transmit frame will be padded by bytes with the value of 00h. the default value of apad_xmt is 0; this will disable auto pad generation after h_reset. it is the responsibility of upper layer software to correctly define the actual length field contained in the message to correspond to the total number of llc data bytes encapsulated in the packet (length field as defined in the iso 8802-3 (ieee/ansi 802.3) standard). the length value contained in the message is not used by the pcnet-32 controller to compute the actual number of pad bytes to be inserted. the pcnet-32 controller will append pad bytes dependent on the actual number of bits transmitted onto the network. once the last data byte of the frame has completed, prior to appending the fcs, the pcnet-32 controller will check to ensure that 544 bits have been transmitted. if not, pad bytes are added to extend the frame size to this value, and the fcs is then added. figure 35. iso 8802-3 (ieee/ansi 802.3) data frame the 544 bit count is derived from the following: minimum frame size 64 bytes 512 bits (excluding preamble, including fcs) preamble/sfd size 8 bytes 64 bits fcs size 4 bytes 32 bits to be classed as a minimum size frame at the receiver the transmitted frame must contain: preamble + (min frame size + fcs) bits at the point that fcs is to be appended, the transmitted frame should contain: preamble + (min frame size ? fcs) bits 64 + (512 ? 32) bits a minimum length transmit frame from the pcnet-32 controller will, therefore, be 576 bits, after the fcs is appended. the ethernet specification assumes that minimum length messages will be at least 64 bytes in length. transmit fcs generation automatic generation and transmission of fcs for a transmit frame depends on the value of dxmtfcs bit in csr15. when dxmtfcs = 0 the transmitter will generate and append the fcs to the transmitted frame. if the automatic padding feature is invoked (apad_xmt is set in csr4), the fcs will be appended by the pcnet-32 controller regardless of the state of dxmtfcs. note that the calculated fcs is transmitted most significant bit first. the default value of dxmtfcs is 0 after h_reset. transmit exception conditions exception conditions for frame transmission fall into two distinct categories. those which are the result of normal network operation, and those which occur due to abnormal network and/or host related events. normal events which may occur and which are handled autonomously by the pcnet-32 controller include colli- sions within the slot time with automatic retry. the pcnet-32 controller will ensure that collisions which oc- cur within 512 bit times from the start of transmission (including preamble) will be automatically retired with no host intervention. the transmit fifo ensures this by preamble 1010....1010 sync 10101011 destination address source address length llc data pad fcs 4 bytes 46 ? 1500 bytes 2 bytes 6 bytes 6 bytes 8 bits 56 bits
AM79C965A 119 guaranteeing that data contained within the fifo will not be overwritten until at least 64 bytes (512 bits) of preamble plus address, length and data fields have been transmitted onto the network without encountering a collision. if 16 total attempts (initial attempt plus 15 retries) fail, the pcnet-32 controller sets the rtry bit in the current transmit tdte in host memory (tmd2), gives up ownership (resets the own bit to zero) for this frame, and processes the next frame in the transmit ring for transmission. abnormal network conditions include: loss of carrier. late collision. sqe test error (does not apply to 10base-t port) none of the abnormal network conditions should not occur on a correctly configured 802.3 network, and will be reported if they do. when an error occurs in the middle of a multi-buffer frame transmission, the error status will be written in the current descriptor. the own bit(s) in the subsequent descriptor(s) will be reset until the stp (the next frame) is found. loss of carrier a loss of carrier condition will be reported if the pcnet-32 controller cannot observe receive activity while it is transmitting on the aui port. after the pcnet-32 controller initiates a transmission it will expect to see data ? looped-back ? on the di pair. this will internally generate a ? carrier sense, ? indicating that the integrity of the data path to and from the mau is intact, and that the mau is operating correctly. this ? carrier sense ? signal must be asserted about 6 bit times before the last transmitted bit on do. if ? carrier sense ? does not become active in response to the data transmission, or becomes inactive before the end of transmission, the loss of carrier (lcar) error bit will be set in tmd2 after the frame has been transmitted. the frame will not be retried on the basis of an lcar error. when the 10base-t port is selected, lcar will be re- ported for every frame transmitted during the link fail condition. late collision a late collision will be reported if a collision condition occurs after one slot time (512 bit times) after the trans- mit process was initiated (first bit of preamble com- menced). the pcnet-32 controller will abandon the transmit process for the particular frame, set late colli- sion (lcol) in the associated tmd2, and process the next transmit frame in the ring. frames experiencing a late collision will not be retried. recovery from this con- dition must be performed by upper layer software. sqe test error during the inter packet gap time following the comple- tion of a transmitted message, the aui ci pair is as- serted by some transceivers as a self-test. the integral manchester encoder/decoder will expect the sqe test message (nominal 10 mhz sequence) to be returned via the ci pair, within a 40 network bit time period after di goes inactive (this does not apply if the 10base-t port is selected). if the ci input is not asserted within the 40 network bit time period following the completion of transmission, then the pcnet-32 controller will set the cerr bit in csr0. cerr will be asserted in 10base-t mode after transmit if t-mau is in link fail state. cerr will never cause intr to be activated. it will, however, set the err bit in csr0. receive operation the receive operation and features of the pcnet-32 controller are controlled by programmable options. receive function programming automatic pad field stripping is enabled by setting the astrp_rcv bit in csr4. this can provide flexibility in the reception of messages using the 802.3 frame format. all receive frames can be accepted by setting the prom bit in csr15. when prom is set, the pcnet-32 controller will attempt to receive all messages, subject to minimum frame enforcement. promiscuous mode overrides the effect of the disable receive broadcast bit on receiving broadcast frames. the point at which the bmu will start to transfer data from the receive fifo to buffer memory is controlled by the rcvfw bits in csr80. the default established during h_reset is 10b which sets the threshold flag at 64 bytes empty. automatic pad stripping during reception of an 802.3 frame the pad field can be stripped automatically. astrp_rcv (csr4, bit 10) = 1 enables the automatic pad stripping feature. the pad field will be stripped be- fore the frame is passed to the fifo, thus preserving fifo space for additional frames. the fcs field will also be stripped, since it is computed at the transmitting station based on the data and pad field characters, and will be invalid for a receive frame that has had the pad characters stripped. the number of bytes to be stripped is calculated from the embedded length field, as defined in the iso 8802- 3 (ieee/ansi 802.3) definition, contained in the frame. the length indicates the actual number of llc data bytes contained in the message. any received frame which contains a length field less than 46 bytes will have the pad field stripped (if astrp_rcv is set).
120 AM79C965A receive frames which have a length field of 46 bytes or greater will be passed to the host unmodified. note that for some network protocols, the value passed in the ethernet type and/or 802.3 length field is not compliant with either standard and may cause problems. figure 36 shows the byte/bit ordering of the received length field for an 802.3 compatible frame format. receive fcs checking reception and checking of the received fcs is per- formed automatically by the pcnet-32 controller. note that if the automatic pad stripping feature is enabled, the fcs for padded frames will be verified against the value computed for the incoming bit stream including pad characters, but the fcs value for a padded frame will not be passed to the host. if an fcs error is detected in any frame, the error will be reported in the crc bit in rmd1. figure 36. iso 8802.3 (ieee/ansi 802.3) data frame receive exception conditions exception conditions for frame reception fall into two distinct categories: those which are the result of normal network operation, and those which occur due to abnormal network and/or host related events. normal events which may occur and which are handled autonomously by the pcnet-32 controller are basically collisions within the slot time and automatic runt packet rejection. the pcnet-32 controller will ensure that colli- sions which occur within 512 bit times from the start of reception (excluding preamble) will be automatically deleted from the receive fifo with no host intervention. the receive fifo will delete any frame which is composed of fewer than 64 bytes provided that the runt packet accept (rpa bit in csr124) feature has not been enabled. this criterion will be met regardless of whether the receive frame was the first (or only) frame in the fifo or if the receive frame was queued behind a previously received message. abnormal network conditions include: fcs error late collision host-related receive exception conditions include miss, buff, and oflo. these are described in the bmu section. loopback operation loopback is a mode of operation intended for system testing. in this mode the transmitter and receiver are both operating at the same time so that the controller receives its own transmissions. the controller provides two types of internal loopback and one type of external loopback. in internal loopback mode the transmitter preamble 1010....1010 sync 10101011 destination address source address length llc data pad fcs 4 bytes 46 ? 1500 bytes 2 bytes 6 bytes 6 bytes 8 bits 56 bits start of frame at time = 0 increasing time bit 0 bit 7 bit 0 bit 7 most significant byte least significant byte 1 ? 1500 bytes 45 ? 0 bytes 18219-43
AM79C965A 121 data can be looped back to the receiver at one of two places inside the controller without actually transmitting any data to the external network. the receiver will move the received data to the external network. the receiver will move the received data to the next receive buffer, where it can be examined by software. alternatively, in external loopback mode, data can be transmitted to and received from the external network. there are restrictions on loopback operation. the pcnet-32 controller has only one fcs generator circuit. the fcs generator can be used by the transmitter to generate the fcs that is appended to the frame, or it can be used by the receiver to verify the fcs of the received frame. it can not be used by the receiver and transmitter at the same time. if the fcs generator is connected to the receiver, the transmitter will not append an fcs to the frame, but the receiver will check for one. the user can, however, calculate the fcs value for a frame and include this four-byte number in the transmit buffer. if the fcs generator is connected to the transmitter, the transmitter will append an fcs to the frame, but the re- ceiver will not check it. however, the user can verify the fcs by software. during loopback the fcs logic can be allocated to the receiver by setting dxmtfcs = 1 in csr15. if dxmtfcs=0, the mac engine will calculate and ap- pend the fcs to the transmitted message. the receive message passed to the host will therefore contain an additional 4 bytes of fcs. in this loopback configuration, the receive circuitry cannot detect fcs errors if they occur. if dxmtfcs=1, the last four bytes of the transmit message must contain the (software generated) fcs computed for the transmit data preceding it. the mac engine will transmit the data without addition of an fcs field, and the fcs will be calculated and verified at the receiver. the loopback facilities of the mac engine allow full operation to be verified without disturbance to the network. loopback operation is also affected by the state of the loopback control bits (loop, mendecl, and intl) in csr15. this affects whether the internal mendec is considered part of the internal or external loop-back path. the multicase address detection logic uses the fcs generator. therefore, when in the loopback mode(s), the multicast address detection feature of the mac engine, programmed by the contents of the logical address filter (ladrf [63:0] in csrs 8-11) can only be tested when dxmtfcs=1, allocating the fcs generator to the receiver. all other features operate identically in loopback as in normal operation, such as automatic transmit padding and receive pad stripping. when performing an internal loopback, no frame will be transmitted to the network. however, when the pcnet-32 controller is configured for internal loopback the receiver will not be able to detect network traffic. external loopback tests will transmit frames onto the network when the aui port is selected. runt packet accept is automatically enabled when any loopback mode is invoked. loopback mode can be performed with any frame size. runt packet accept is internally enabled (rpa bit in csr 124 is not affected) when any loopback mode is invoked. this is to be backwards compatible to the lance (am7990) software. when external loopback is performed while the 10base-t mau is selected, collision detection is disabled. this is necessary, because a collision in a 10base-t system is defined as activity on the transmitter outputs and receiver inputs at the same time, which is exactly what happens during external loopback. since a 10base-t hub does not normally feed the station ? s transmitter outputs back into the station ? s receiver inputs, the use of external loopback in a 10base-t system usually requires some sort of external hardware that connects the outputs of the 10base-t mau to its inputs. led support the pcnet-32 controller can support up to 4 leds. led outputs lnkst , led1 and led2 allow for direct connection of an led and its supporting pull-up device. led output ledpre3 may require an additional buffer between the pcnet-32 controller output pin and the led and its supporting pull-up device. because the ledpre3 output is multiplexed with other pcnet-32 controller functions, it may not always be possible to connect an led circuit directly to the ledpre3 pin. for example, when an led circuit is directly connected to the eedo/ledpre3/srd pin, then it is not possible for most serial eeprom devices to sink enough i ol to maintain a valid low level on the eedo input to the pcnet-32 controller. therefore, in applications that require both an eeprom and a fourth led, then it is necessary to buffer the ledpre3 circuit from the eeprom-pcnet-32 controller connection. the led registers in the bcr resource space allow each led output to be programmed for either active high or active low operation, so that both inverting and non-inverting buffering choices are possible. in applications where an eeprom is not needed, the ledpre3 pin may be directly connected to an led circuit. the pcnet-32 controller ledpre3 pin driver will be able to sink enough current to properly drive the led circuit.
122 AM79C965A by default, after h_reset, the 4 led outputs are configured as shown in table 40. table 40. led configuration for each led register, each of the status signals is anded with its enable signal, and these signals are all or ? d together to form a combined status signal. each led pin ? s combined status signal runs to a pulse stretcher, which consists of a 3-bit shift register clocked at 38 hz (26 ms). the data input of each shift register is normally at logic 0. the or gate output for each led register asynchronously sets all three bits of its shift register when the output becomes asserted. the inverted output of each shift register is used to control an led pin. thus the pulse stretcher provides 2 ? 3 clocks of stretched led output, or 52 ms to 78 ms. figure 37 shows the led signal circuit that exists for each led pin. figure 37. on-chip led control logic h_reset, s_reset and stop there are three different types of reset operations that may be performed on the pcnet-32 device, h_reset, s_reset and stop. these names have been used throughout the document. the following is a description of each type of reset operation: h_reset h_reset= hardware_reset is a pcnet-32 reset operation that has been created by the proper assertion of the reset pin of the pcnet-32 device. when the minimum pulse width timing as specified in the reset pin description has been satisfied, then an internal reset operation will be performed. h_reset will reset all of or some portions of csr0, 3, 4, 15, 58, 80, 82, 100, 112, 114, 122, 124 and 126 to default values; h_reset will reset all of or some portions of bcr 2, 4, 5, 6, 7, 18, 19, 20, 21 to default values. h_reset will cause the microcode program to jump to its reset state. following the end of the h_reset operation, the pcnet-32 controller will attempt to read the eeprom device through the eeprom microwire interface. the h_reset operation will unconditionally cause all intr pins to become inactive. (note that there may be either 2 or 4 intr pins, depending upon the jtagsel pin setting.) the h_reset operation will unconditionally cause the hold signal to become de-asserted. h_reset will reset t-mau to link fail state. h_reset is generated by proper assertion of either the reset or reset pin, depending upon the mode that has been selected through the lb/vesa pin. s_reset s_reset = software_reset is a pcnet-32 reset operation that has been created by a read ac- cess to the reset register which is located at offset 14h from the pcnet-32 controller i/o base address. led output default interpretation default drive enable default output polarity lnkst link status enabled active low led1 receive enabled active low led2 receive polarity enabled active low ledpre3 transmit enabled active low lnkst lnkst e rcvm rcvm e xmt xmt e rxpol rxpol e rcv rcv e jab jab e col col e to pulse stretcher
AM79C965A 123 s_reset will reset all of or some portions of csr0, 3, 4, 15, 80, 100 and 124 to default values. s_reset will reset none of the bcr locations to default values. s_reset will cause the microcode program to jump to its reset state. following the end of the s_reset operation, the pcnet-32 controller will not attempt to read the eeprom device. see also the sub- section on reset register in the i/o register access section under software access. the s_reset opera- tion will not cause intr pins to become inactive. s_reset will set the t-mau into link fail state. note that s_reset will not cause a de-assertion of the hold signal, if it happens to be active at the time of the read to the reset register. the hold signal will remain active until the hlda signal is synchronously sampled as asserted. following the read of the reset register, on the next clock cycle after the hlda signal is synchronously sampled as asserted, (except in am386 mode, when two cycles are needed) the pcnet- 32 controller will de-assert the hold signal; no bus master accesses will have been performed during this brief bus ownership period. stop stop is a pcnet-32 reset operation that has been created by the assertion of the stop bit in csr0. that is, a stop reset is generated by writing a one to the stop bit of csr0 when the stop bit currently has a value of zero. if the stop bit value is currently a one, and a one is rewritten to the stop bit, then no stop reset will be generated. the stop operation will not cause intr pins to become inactive. stop will reset all or some portions of csr0, 3, and 4 to default values; stop will reset none of the bcr locations to default values. stop will cause the microcode program to jump to its reset state. follow- ing the end of the stop operation, the pcnet-32 con- troller will not attempt to read the eeprom device. for the identity of individual csrs and bit locations that are affected by stop, see the individual csr register descriptions. setting the stop bit does not affect the t- m a u.
124 AM79C965A user accessible registers the pcnet-32 controller implements all pcnet-isa (am79c960) registers, all lance (am7990) registers, all ilacc (am79c900) registers, plus a number of additional registers. the pcnet-32 controller registers are compatible with both the pcnet-isa (am79c960) registers and all of the lance (am7990) registers upon power up. compatibility to the ilacc set of registers requires one access to the software style register (bcr20, bits 7 ? 0) to be performed. by setting an appropriate value of the software style register (bcr20, bits 7 ? 0) the user can select a set of registers that are compatible with the ilacc set of registers. note that all register locations are defined to be 16 bits in width when wio mode is selected. when dwio mode is selected, all register locations are defined to be 32 bits in width. when performing register write operations in dwio mode, the upper 16 bits should always be written as zeros, except aprom locations. when performing register read operations in dwio mode, the upper 16 bits of i/o resources should always be written as zeros, except for aprom locations and csr88. when performing register read operations in dwio mode, the upper 16 bits of i/o resources should always be regarded as having undefined values, except for the aprom locations and csr88. pcnet-32 controller registers can be divided into three groups: setup registers: registers that are intended to be initialized by the system initialization procedure (e.g. bios device initialization routine) or by the device driver to program the operation of various pcnet-32 controller features running registers : registers that are intended to be used by the device driver software once the pcnet-32 controller is running to access status information and to pass control information test registers : registers that are intended to be used only for testing and diagnostic purposes below is a list of the registers that fall into each of the first two categories. those registers that are not included in either of these lists can be assumed to be intended for diagnostic purposes. setup registers the following is a list of those registers that would typi- cally need to be programmed once during the setup of the pcnet-32 controller within a system. the control bits in each of these registers typically do not need to be modified once they have been written. however, there are no restrictions as to how many times these registers may actually be accessed. note that if the default power up values of any of these registers is acceptable to the application, then such registers need never be accessed at all. also note that some of these registers may be programmable through the eeprom read operation, and therefore do not necessarily need to be written to by the system initialization procedure or by the driver software. crs1 initialization address[15:0] csr2 initialization address[31:16] csr3 interrupt masks and deferral control csr4 test and features control csr8 logical address filter [15:0] csr9 logical address filter [31:16] csr10 logical address filter [47:32] csr11 logical address filter [63:48] csr12 physical address filter [15:0] csr13 physical address filter [31:16] csr14 physical address filter [47:32] csr15 mode register csr24 base address of receive ring lower csr25 base address of receive ring upper csr30 base address of transmit ring lower crs31 base address of transmit ring upper csr47 polling interval csr58 software style csr76 receive ring length csr78 transmit ring length csr80 cycle register and fifo threshold control csr82 bus activity timer csr100 memory error time-out register csr122 receiver packet alignment control bcr2 mau configuration bcr16 i/o base address lower bcr17 i/o base address upper bcr18 bus size and burst control register bcr19 eeprom control and status register bcr20 software style bcr21 interrupt control running registers the following is a list of those registers that would typi- cally need to be periodically read and perhaps written during the normal running operation of the pcnet-32
AM79C965A 125 controller within a system. each of these registers con- tains control bits or status bits or both. rap register address port register csr0 pcnet-32 controller status register csr4 test and features control csr112 missed frame count csr114 receive collision count rap register the rap (register address pointer) register is used to gain access to csr and bcr registers on board the pcnet-32 controller. the value of the rap indicates the address of a csr or bcr whenever an rdp or bdp access is per- formed. that is to say, rap serves as a pointer to csr and bdp space. as an example of rap use, consider a read access to csr4. in order to access this register, it is necessary to first load the value 0004 into the rap by performing a write access to the rap offset of 12h (12h when wio mode has been selected, 14h when dwio mode has been selected). the data for the rap write would be 0004. then a second access is performed on the pcnet-32 controller, this time to the rdp offset of 10h (for either wio or dwio mode). the rdp access is a read access, and since rap has just been loaded with the value of 0004, the rdp read will yield the contents of csr4. a read of the bdp at this time (offset of 16h when wio mode has been selected, 1ch when dwio mode has been selected) will yield the contents of bcr4, since the rap is used as the pointer into both bdp and rdp space. rap: register address port bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-8 res reserved locations. read and written as zeros. 7-0 rap register address port. the value of these 8 bits determines which csr or bcr will be accessed when an i/ o access to the rdp or bdp port, respectively, is performed. rap is cleared by h_reset or s_reset and is unaffected by the stop bit. control and status registers the csr space is accessible by performing accesses to the rdp (register data port). the particular csr that is read or written during an rdp access will depend upon the current setting of the rap. rap serves as a pointer into the csr space. rap also serves as the pointer to bcr space, which is described in a later section. csr0: pcnet-32 controller status bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 err error is set by the oring of babl, cerr, miss, and merr. err remains set as long as any of the error flags are true. err is read only. write operations are ignored. 14 babl babble is a transmitter time-out error. it indicates that the trans- mitter has been on the channel longer than the time required to send the maximum length frame. babl will be set if 1519 bytes or greater are transmitted. when babl is set, intr is asserted if iena = 1 and the mask bit bablm in csr3 is clear. babl assertion will set the err bit. babl is set by the mac layer and cleared by writing a ? 1 ? . writing a ? 0 ? has no effect. babl is cleared by h_reset or s_reset or setting the stop bit. 13 cerr collision error indicates that the collision inputs to the aui port failed to activate within 20 network bit times after chip terminated transmission (sqe test). this feature is a transceiver test feature. in 10base-t mode cerr will be set if a transmission is attempted while the t-mau is in link fail state. cerr assertion will not result in an interrupt being generated. cerr assertion will set the err bit. cerr is set by the mac layer and cleared by writing a ? 1 ? . writing a ? 0 ? has no effect. cerr is cleared by h_reset or s_reset or setting the stop bit. 12 miss missed frame is set when pcnet-32 controller has lost an incoming receive frame resulting from a receive descriptor not being available. this bit is the only immediate indication that receive data has been lost since there is no
126 AM79C965A current receive descriptor to write status to. when miss is set, intr is as- serted if iena = 1 and the mask bit missm in csr3 is clear. miss assertion will set the err bit. miss is set by the buffer management unit and cleared by writing a ? 1 ? . writing a ? 0 ? has no effect. miss is cleared by h_reset or s_reset or setting the stop bit. 11 merr memory error is set when pcnet-32 controller requests the use of the system interface bus by asserting hold and has not received hlda assertion after a programmable length of time.the length of time in microseconds before merr is asserted will depend upon the setting of the bus time-out register (csr100). the default setting of csr100 will give a merr after 51.2 s of bus latency. when merr is set, intr is as- serted if iena = 1 and the mask bit merrm in csr3 is clear. merr assertion will set the err bit, regardless of the settings of iena and merrm. merr is set by the bus interface unit and cleared by writing a ? 1 ? . writing a ? 0 ? has no effect. merr is cleared by h_reset or s_reset or by setting the stop bit. 10 rint receive interrupt. rint is set by the buffer management unit of the pcnet-32 controller after the last descriptor of a receive packet has been updated by writing a zero to the ownership bit. rint may also be set when the first descriptor of a receive packet has been updated by writing a zero to the ownership bit if the sprinten bit of csr3 has been set to a one. when rint is set, intr is asserted if iena = 1 and the mask bit rintm in csr3 is clear. rint is cleared by the host by writing a ? 1 ? . writing a ? 0 ? has no effect. rint is cleared by h_reset or s_reset or by setting the stop bit. 9 tint transmit interrupt is set after completion of a transmit frame and toggling of the own bit in the last buffer in the transmit descriptor ring. when tint is set, intr is asserted if iena = 1 and the mask bit tintm in csr3 is clear. tint is set by the buffer man- agement unit after the last transmit buffer has been updated and cleared by writing a ? 1 ? . writing a ? 0 ? has no effect. tint is cleared by h_reset or s_reset or setting the stop bit. 8 idon initialization done indicates that the initialization sequence has completed. when idon is set, pcnet-32 controller has read the initialization block from memory. when idon is set, intr is as- serted if iena = 1 and the mask bit idonm in csr3 is clear. idon is set by the buffer management unit after the initialization block has been read from memory and cleared by writing a ? 1 ? . writing a ? 0 ? has no effect. idon is cleared by h_reset or s_reset or setting the stop bit. 7 intr interrupt flag indicates that one or more following interrupt causing conditions has occurred: babl, miss, merr, mfco, rcvcco, rint, rpco, tint, idon, jab or txstrt. and its associated mask bit is clear. if iena = 1 and intr is set, intr will be active. intr is read only. intr is cleared by h_reset or s_reset or by setting the stop bit or by clearing all of the active individual interrupt bits that have not been masked out. 6 iena interrupt enable allows intr to be active if the interrupt flag is set. if iena = ? 0 ? then intr will be disabled regardless of the state of intr. iena is set by writing a ? 1 ? and cleared by writing a ? 0 ? . iena is cleared by h_reset or s_reset or setting the stop bit.
AM79C965A 127 5 rxon receive on indicates that the receive function is enabled. rxon is set if drx (csr15[0]) = ? 0 ? after the start bit is set. if init and start are set together, rxon will not be set until after the initialization block has been read in. rxon is read only. rxon is cleared by h_reset or s_reset or setting the stop bit. 4 txon transmit on indicates that the transmit function is enabled. txon is set if dtx (csr15[1]) = ? 0 ? after the start bit is set. if init and start are set together, txon will not be set until after the initialization block has been read in. txon is read only. txon is cleared by h_reset or s_reset or setting the stop bit. 3 tdmd transmit demand, when set, causes the buffer management unit to access the transmit descriptor ring without waiting for the poll-time counter to elapse. if txon is not enabled, tdmd bit will be reset and no transmit descriptor ring access will occur. tdmd is required to be set if the dpoll bit in csr4 is set. setting tdmd while dpoll = 0 merely hastens the pcnet-32 controller ? s response to a transmit descriptor ring entry. tdmd is set by writing a ? 1 ? . writing a ? 0 ? has no effect. tdmd will be cleared by the buffer management unit when it fetches a transmit descriptor. tdmd is cleared by h_reset or s_reset or setting the stop bit. 2 stop stop assertion disables the chip from all dma activity. the chip remains inactive until either strt or init are set. if stop, strt and init are all set together, stop will override strt and init. stop is set by writing a ? 1 ? or by h_reset or s_reset. writing a ? 0 ? has no effect. stop is cleared by setting either strt or init. 1 strt strt assertion enables pcnet-32 controller to send and receive frames, and perform buffer management operations. setting strt clears the stop bit. if strt and init are set together, pcnet-32 controller initialization will be performed first. strt is set by writing a ? 1 ? . writing a ? 0 ? has no effect. strt is cleared by h_reset or s_reset or by setting the stop bit. 0 init init assertion enables pcnet-32 controller to begin the initialization procedure which reads in the initialization block from memory. setting init clears the stop bit. if strt and init are set together, pcnet-32 controller initialization will be performed first. init is not cleared when the initialization sequence has completed. init is set by writing a ? 1 ? . writing a ? 0 ? has no effect. init is cleared by h_reset or s_reset or by setting the stop bit. csr1: iadr[15:0] bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 iadr[15:0] lower 16 bits of the address of the initialization block. regardless of the value of ssize32(bcr20/csr58, bit 8) iadr[1:0] must be zero. this register is aliased with csr16. read/write accessible only when the stop bit in csr0 is set. unaffected by h_reset or s_reset or by setting the stop bit. csr2: iadr[31:16] bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-8 iadr[31:24] if ssize32 is set (bcr20[8]), then the iadr[31:24] bits will be used strictly as the upper 8 bits of the initialization block address. however, if ssize32 is reset, then the iadr[31:24] bits will be used to generate the upper 8 bits of all bus
128 AM79C965A mastering addresses, as required for a 32 bit address bus. note that the 16-bit software structures specified by the ssize32 = 0 setting will yield only 24 bits of address for pcnet-32 controller bus master accesses, while the 32-bit hard- ware for which the pcnet-32 controller is intended will require 32 bits of address. therefore, whenever ssize32 = 0, the iadr[31:24] bits will be appended to the 24-bit initialization address, to each 24-bit descriptor base address and to each beginning 24-bit buffer address in order to form complete 32-bit addresses. the upper 8 bits that exist in the descriptor address registers and the buffer address registers which are stored on board the pcnet-32 controller will be overwritten with the iadr[31:24] value, so that csr accesses to these registers will show the 32 bit address that includes the appended field. if ssize32 = 1, then software will provide 32-bit pointer values for all of the shared software structures (i.e. descriptor bases and buffer addresses), and therefore, iadr[31:24] will not be written to the upper 8 bits of any of these resources, but it will be used as the upper 8 bits of the initialization address. read/write accessible only when the stop bit in csr0 is set. unaffected by h_reset or s_reset or by setting the stop bit. 7-0 iadr[23:16] bits 23 through 16 of the address of the initialization block. whenever this register is written, csr17 is updated with csr2 ? s contents. read/write accessible only when the stop bit in csr0 is set. unaffected by h_reset or s_reset or by setting the stop bit. csr3: interrupt masks and deferral control bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 res reserved location. read and written as zero. 14 bablm babble mask. if bablm is set, the babl bit in csr0 will be masked and unable to set intr flag in csr0. read/write accessible always. bablm is cleared by h_reset or s_reset and is not affected by stop. 13 res reserved location. read and written as zero. 12 missm missed frame mask. if missm is set, the miss bit in csr0 will be masked and unable to set intr flag in csr0. read/write accessible always. missm is cleared by h_reset or s_reset and is not affected by stop. 11 merrm memory error mask. if merrm is set, the merr bit in csr0 will be masked and unable to set intr flag in csr0. read/write accessible always. merrm is cleared by h_reset or s_reset and is not affected by stop. 10 rintm receive interrupt mask. if rintm is set, the rint bit in csr0 will be masked and unable to set intr flag in csr0. read/write accessible always. rintm is cleared by h_reset or s_reset and is not affected by stop. 9 tintm transmit interrupt mask. if tintm is set, the tint bit in csr0 will be masked and unable to set intr flag in csr0. read/write accessible always. tintm is cleared by h_reset or s_reset and is not affected by stop. 8 idonm initialization done mask. if idonm is set, the idon bit in csr0 will be
AM79C965A 129 masked and unable to set intr flag in csr0. read/write accessible always. idonm is cleared by h_reset or s_reset and is not affected by stop. 7 res reserved location. read and written as zeroes. 6 dxsuflo disable transmit stop on under- flow error. when dxsuflo (csr3, bit 6) is set to zero, the transmitter is turned off when an uflo error occurs (csr0, txon = 0). when dxsuflo is set to one, the pcnet-32 controller gracefully recovers from an uflo error. it scans the transmit descriptor ring until it finds the start of a new frame and starts a new transmission. read/write accessible always. dxsuflo is cleared by h_reset or s_reset and is not affected by stop. 5 lappen look-ahead packet processing enable. when set to a one, the lappen bit will cause the pcnet-32 controller to generate an interrupt following the descriptor write operation to the first buffer of a receive frame. this interrupt will be generated in addition to the interrupt that is generated following the descriptor write operation to the last buffer of a receive frame. the interrupt will be signaled through the rint bit of csr0. setting lappen to a one also enables the pcnet-32 controller to read the stp bit of receive descriptors. the pcnet-32 controller will use the stp information to determine where it should begin writing a receive frame ? s data. note that while in this mode, the pcnet-32 controller can write intermediate frame data to buffers whose descriptors do not contain stp bits set to one. following the write to the last descriptor used by a frame, the pcnet-32 controller will scan through the next descriptor entries to locate the next stp bit that is set to a one. the pcnet-32 controller will begin writing the next frame ? s data to the buffer pointed to by that descriptor. note that because several de- scriptors may be allocated by the host for each frame, and not all messages may need all of the descriptors that are allocated between descriptors that contain stp = one, then some descriptors/ buffers may be skipped in the ring. while performing the search for the next stp bit that is set to one, the pcnet-32 controller will advance through the receive descriptor ring regardless of the state of ownership bits. if any of the entries that are examined during this search indicate pcnet-32 controller ownership of the descriptor but also indicate stp = ? 0 ? , then the pcnet-32 controller will reset the own bit to zero in these entries. if a scanned entry indicates host ownership with stp = ? 0 ? then the pcnet-32 controller will not alter the entry, but will advance to the next entry. when the stp bit is found to be true, but the descriptor that contains this setting is not owned by the pcnet-32 controller, then the pcnet-32 controller will stop advancing through the ring entries and begin periodic polling of this entry. when the stp bit is found to be true, and the descriptor that contains this setting is owned by the pcnet-32 controller, then the pcnet-32 controller will stop advancing through the ring entries, store the descriptor information that it has just read, and wait for the next receive to arrive. this behavior allows the host software to preassign buffer space in such a manner that the ? header ? portion of a receive frame will always be written to a particular memory area, and the ? data ? portion of a receive frame will always be written to a separate memory area. the interrupt is generated when the ? header ? bytes have been written to the ? header ? memory area.
130 AM79C965A read/write accessible always. the lappen bit will be reset to zero by h_reset or s_reset and will be unaffected by stop. see appendix d for more infor- mation on the lapp concept. 4 dxmt2pd disable transmit two part deferral. if dxmt2pd is set, transmit two part deferral will be disabled. read/write accessible always. dxmt2pd is cleared by h_reset or s_reset and is not affected by stop. 3 emba enable modified back-off algo- rithm. if emba is set, a modified back-off algorithm is implemented. read/write accessible always. emba is cleared by h_reset or s_reset and is not affected by stop. 2 bswp byte swap. this bit is used to choose between big and little endian modes of operation. when bswp is set to a one, big endian mode is selected. when bswp is set to zero, little endian mode is selected. when big endian mode is selected, the pcnet-32 controller will swap the order of bytes on the data bus during fifo transfers only. specifically, d31 ? 24 becomes byte0, d23 ? 16 becomes byte1, d15 ? 8 becomes byte2 and d7 ? 0 becomes byte3 when big endian mode is selected. when little endian mode is selected, the order of bytes on the data bus is: d31 ? 24 is byte3, d23 ? 16 is byte2, d15 ? 8 is byte1 and d7 ? 0 is byte0. byte swap only affects data transfers that involve the fifos. initialization block transfers are not affected by the setting of the bswp bit. descriptor transfers are not affected by the setting of the bswp bit. rdp, rap and bdp accesses are not affected by the setting of the bswp bit. aprom transfers are not af- fected by the setting of the bswp bit. bswp is write/readable regardless of the state of the stop bit. bswp is cleared by h_reset or s_reset and is not affected by stop. 1-0 res reserved locations. the default value is zero for both locations. writing a one to these bits has no effect on device function; if a one is written to these bits, then a one will be read back. existing drivers may write a one to these bits for compatibility, but new drivers should write a zero to these bits and should treat the read value as undefined. csr4: test and features control bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 entst enable test mode operation. setting entst to one enables internal test functions which are useful only for stand alone integrated circuit testing. in addition, the runt packet accept (rpa) bit (csr124, bit 3) may be changed only when entst is set to one. to enable rpa, the user must first write a one to the entst bit. next, the user must first write a one to the rpa bit (csr124, bit 3). finally, the user must write a zero to the entst bit to take the device out of test mode operation. once the rpa bit has been set to one, the device will remain in the runt packet accept mode until the rpa bit is cleared to zero. read/write accessible. entst is cleared by h_reset or s_reset and is unaffected by the stop bit. 14 dmaplus when dmaplus = ? 1 ? , disables the burst transaction counter, csr80. if dmaplus = ? 0 ? , the burst transaction counter is enabled. read and write accessible. dmaplus is cleared by h_reset or s_reset and is unaffected by the stop bit. 13 timer timer enable register. if timer is set, the bus activity timer register, csr82 is enabled. if timer is cleared, the bus activity timer register is disabled.
AM79C965A 131 read/write accessible. timer is cleared by h_reset or s_reset and is unaffected by the stop bit. 12 dpoll disable transmit polling. if dpoll is set, the buffer management unit will disable transmit polling. likewise, if dpoll is cleared, automatic transmit polling is enabled. if dpoll is set, tdmd bit in csr0 must be periodically set in order to initiate a manual poll of a transmit descriptor. transmit descriptor polling will not take place if txon is reset. read/write accessible. dpoll is cleared by h_reset or s_reset and is unaffected by the stop bit. 11 apad_xmt auto pad transmit. when set, apad_xmt enables the automatic padding feature. transmit frames will be padded to extend them to 64 bytes including fcs. the fcs is calculated for the entire frame including pad, and appended after the pad field. apad_xmt will override the programming of the dxmtfcs bit. read and write accessible. apad_xmt is reset by h_reset or s_reset and is unaffected by the stop bit. 10 astrp_rcv auto strip receive. when set, astrp_rcv enables the automatic pad stripping feature. the pad and fcs fields will be stripped from receive frames and not placed in the fifo. read and write accessible. astrp_rcv is reset by h_reset or s_reset and is unaffected by the stop bit. 9 mfco missed frame counter overflow interrupt. indicates the mpc (csr112) wrapped around. can be cleared by writing a 1 to this bit. also cleared by h_reset or s_reset or setting the stop bit. writing a 0 has no effect. when mfco is set, intr is as- serted if iena = 1 and the mask bit mfcom is cleared. when the swstyle register (bcr20[7:0]) has been pro- grammed to the ilacc compati- bility mode, then this bit has no meaning and the pcnet-32 con- troller will never set the value of this bit to one. 8 mfcom missed frame counter overflow mask. if mfcom is set, mfco will be unable to set intr in csr0. set to a one by h_reset or s_reset, unaffected by the stop bit. when the swstyle register (bcr20[7:0]) has been pro- grammed to the ilacc compati- bility mode, then this bit has no meaning and the pcnet-32 con- troller will set the value of this bit to a zero. 7 res reserved location. written as zero and read as zero. 6 res reserved location. this bit may be written to as either a one or a zero, but will always be read as a zero. this bit has no effect on pcnet-32 controller operation. 5 rcvcco receive collision counter over- flow. indicates the receive collision counter (csr114) wrapped around. can be cleared by writing a 1 to this bit. also cleared by h_reset or s_reset or by setting the stop bit. writing a 0 has no effect. when rcvcco is set, intr is asserted if iena=1 and the mask bit rcvccom is cleared. when the swstyle register (bcr20[7:0]) has been pro- grammed to the ilacc compati- bility mode, then this bit has no meaning and pcnet-32 controller will not set the value of this bit to one. 4 rcvccom receive collision counter over-flow mask. if rcvccom is set, rcvcco will be unable to set intr in csr0. rcvccom is set to a one by h_reset or s_reset and is not affected by stop. when the swstyle register (bcr20[7:0]) has been pro- grammed to the ilacc compati- bility mode, then this bit has no meaning and pcnet-32 controller
132 AM79C965A will set the value of this bit to a zero. 3 txstrt transmit start status is set whenever pcnet-32 controller begins transmission of a frame. when txstrt is set, intr is asserted if iena = 1 and the mask bit txstrtm (csr4 bit 2) is cleared. txstrt is set by the mac unit and cleared by writing a ? 1 ? , by h_reset or s_reset, or setting the stop bit. writing a ? 0 ? has no effect. 2 txstrtm transmit start mask. if txstrtm is set, the txstrt bit in csr4 will be masked and unable to set intr flag in csr0. read/write accessible. txstrtm is set to a one by h_reset or s_reset and is not affected by the stop bit. 1 jab jabber error is set when the pcnet-32 controller twisted-pair mau function exceeds an allowed transmission limit. jabber is set by the t-mau cell and can only be asserted in 10base-t mode. when jab is set, intr is asserted if iena = 1 and the mask bit jabm (csr4[0]) is cleared. jab is set by the t-mau circuit and cleared by writing a ? 1 ? . writing a ? 0 ? has no effect. jab is also cleared by h_reset or s_reset or setting the stop bit. when the swstyle register (bcr20[7:0]) has been pro- grammed to the ilacc compati- bility mode, then this bit has no meaning and pcnet-32 controller will never set the value of this bit to one. 0 jabm jabber error mask. if jabm is set, the jab bit in csr4 will be masked and unable to set intr flag in csr0. read/write accessible. jabm is set to a one by h_reset or s_reset and is not affected by stop. when the swstyle register (bcr20[7:0]) has been pro- grammed to the ilacc compati- bility mode, then this bit has no meaning and pcnet-32 controller will set the value of this bit to a zero. csr6: rx/tx descriptor table length bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 tlen contains a copy of the transmit encoded ring length (tlen) field read from the initialization block during pcnet-32 controller initialization. this field is written during the pcnet-32 controller initialization routine. read accessible only when stop bit is set. write operations have no effect and should not be performed. tlen is only defined after initialization. these bits are unaffected by h_reset, s_reset, or stop. 11-8 rlen contains a copy of the receive encoded ring length (rlen) read from the initialization block during pcnet-32 controller initialization. this field is written during the pcnet-32 controller initialization routine. read accessible only when stop bit is set. write operations have no effect and should not be performed. rlen is only defined after initialization. these bits are unaffected by h_reset, s_reset, or stop. 7-0 res reserved locations. read as zero. write operations should not be performed. csr8: logical address filter, ladrf[15:0] bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 ladrf[15:0] logical address filter, ladrf[15:0]. defined only after the initialization block has been successfully read or a direct i/o write has been performed on this register.
AM79C965A 133 read/write accessible only when stop bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr9: logical address filter, ladrf[31:16] bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 ladrf[31:16] logical address filter, ladrf[31:16]. defined only after the initialization block has been successfully read or a direct i/o write has been performed on this register. read/write accessible only when stop bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr10: logical address filter, ladrf[47:32] bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 ladrf[47:32] logical address filter, ladrf[47:32]. defined only after the initialization block has been successfully read or a direct i/o write has been performed on this register. read/write accessible only when stop bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr11: logical address filter, ladrf[63:48] bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 ladrf[63:48] logical address filter, ladrf[63:48]. defined only after the initialization block has been successfully read or a direct i/o write has been performed on this register. read/write accessible only when stop bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr12: physical address register, padr[15:0] bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 padr[15:0] physical address register, padr[15:0]. defined only after the initialization block has been successfully read or a direct i/o write has been performed on this register. the padr bits are transmitted padr[0] first and padr[47] last. read/write accessible only when stop bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr13: physical address register, padr[31:16] bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 padr[31:16] physical address register, padr[31:16]. defined only after the initialization block has been successfully read or a direct i/o write has been performed on this register. the padr bits are transmitted padr[0] first and padr[47] last. read/write accessible only when stop bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr14: physical address register, padr[47:32] bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 padr[47:32]physical address register, padr[47:32]. defined only after the initialization block has been successfully read or a direct i/o write has been performed on this register. the padr bits are transmitted padr[0] first and padr[47] last. read/write accessible only when stop bit is set. these bits are unaffected by h_reset, s_reset, or stop.
134 AM79C965A csr15: mode register bit name description this register ? s fields are loaded during the pcnet-32 controller initialization routine with the corresponding initialization block values or a direct i/o write has been performed to this register. 31-16 res reserved locations. written as zeros and read as undefined. 15 prom promiscuous mode. when prom = ? 1 ? , all incoming receive frames are accepted. read/write accessible only when stop bit is set. 14 drcvbc disable receive broadcast. when set, disables the pcnet-32 controller from receiving broadcast messages. used for protocols that do not support broadcast addressing, except as a function of multicast. drcvbc is cleared by h_reset or s_reset (broadcast messages will be received) and is unaffected by stop. read/write accessible only when stop bit is set. 13 drcvpa disable receive physical address. when set, the physical address detection (station or node id) of the pcnet-32 controller will be disabled. frames addressed to the nodes individual physical address will not be recognized (although the frame may be accepted by the eadi mechanism). read/write accessible only when stop bit is set. 12 dlnktst disable link status. when dlnktst = ? 1 ? , monitoring of link pulses is disabled. when dlnktst = ? 0 ? , monitoring of link pulses is enabled. this bit only has meaning when the 10base-t network interface is selected. read/write accessible only when stop bit is set. 11 dapc disable automatic polarity cor- rection. when dapc = ? 1 ? , the 10base-t receive polarity reversal algorithm is disabled. likewise, when dapc = ? 0 ? , the polarity reversal algorithm is enabled. this bit only has meaning when the 10base-t network interface is selected. read/write accessible only when stop bit is set. 10 mendecl mendec loopback mode. see the description of the loop bit in csr15. read/write accessible only when stop bit is set. 9 lrt/tsel low receive threshold (t-mau mode only) transmit mode select (aui mode only) lrt low receive threshold. when lrt = ? 1 ? , the internal twisted pair receive thresholds are reduced by 4.5 db below the standard 10base-t value (approximately 3/5) and the unsquelch threshold for the rxd circuit will be 180 ? 312 mv peak. when lrt = ? 0 ? , the unsquelch threshold for the rxd circuit will be the standard 10base-t value, 300 ? 520 mv peak. in either case, the rxd circuit post squelch threshold will be one half of the unsquelch threshold. this bit only has meaning when the 10base-t network interface is selected. read/write accessible only when stop bit is set. cleared by h_reset or s_reset and is unaffected by stop. tsel tsel transmit mode select. tsel controls the levels at which the aui drivers rest when the aui transmit port is idle. when tsel = 0, do+ and do- yield ? zero ? differential to operate transformer coupled loads (ethernet 2 and 802.3). when tsel = 1, the do+ idles at a higher value with respect to do-, yielding a logical high state (ethernet 1). this bit only has meaning when the aui network interface is selected.
AM79C965A 135 read/write accessible only when stop bit is set. cleared by h_reset or s_reset and is unaffected by stop. 8-7 portsel[1:0] port select bits allow for software controlled selection of the network medium. portsel settings of aui and 10base-t are ignored when the asel bit of bcr2 (bit 1) has been set to one. the network port configuration is shown in table 41. table 41. network port configuration. refer to the section on general purpose serial interface for de- tailed information on accessing gpsi. read/write accessible only when stop bit is set. cleared by h_reset or s_reset and is unaffected by stop. 6 intl internal loopback. see the de- scription of loop, csr15-2. read/write accessible only when stop bit is set. 5 drty disable retry. when drty = ? 1 ? , pcnet-32 controller will attempt only one transmission. if drty = ? 0 ? , pcnet-32 controller will attempt 16 retry attempts before signaling a retry error. drty is defined when the initialization block is read. read/write accessible only when stop bit is set. 4 fcoll force collision. this bit allows the collision logic to be tested. pcnet-32 controller must be in internal loopback for fcoll to be valid. if fcoll = ? 1 ? , a collision will be forced during loop-back transmission attempts. a retry error will ultimately result. if fcoll = ? 0 ? , the force collision logic will be disabled. read/write accessible only when stop bit is set. 3 dxmtfcs disable transmit crc (fcs). when dxmtfcs = 0, the transmitter will generate and append a fcs to the transmitted frame. when dxmtfcs = 1, the fcs logic is allocated to the receiver and no fcs is generated or sent with the transmitted frame. dxmtfcs is overridden when add_fcs is set in tmd1. see also the add_fcs bit in tmd1. if dxmtfcs is set and add_fcs is clear for a particular frame, no fcs will be generated. the value of add_fcs is valid only when stp is set. if add_fcs is set for a particular frame, the state of dxmtfcs is ignored and a fcs will be appended on that frame by the transmit circuitry. in loopback mode, this bit deter- mines if the transmitter appends fcs or if the receiver checks the fcs. this bit was called dtcr in the lance (am7990). read/write accessible only when stop bit is set. 2 loop loopback enable allows pcnet-32 controller to operate in full duplex mode for test purposes. when loop = ? 1 ? , loop-back is enabled. in combination with intl and mendecl, various loopback modes are defined in table 42. table 42. loopback modes. read/write accessible only when stop bit is set. loop is cleared by portsel[1:0] asel (bcr2[1]) link status (of 10base-t) network port 0x 1 fail aui 0x 1 pass 10base-t 0 0 0 x aui 0 1 0 x 10base-t 1 0 x x gpsi 1 1 x x reserved loop intl mendecl loopback mode 0 x x non-loopback 1 0 x external loopback 1 1 0 internal loopback include mendec 1 1 1 internal loopback exclude mendec
136 AM79C965A h_reset or s_reset and is unaffected by the stop bit. 1 dtx disable transmit results in pcnet-32 controller not accessing the transmit descriptor ring and therefore no transmissions are attempted. dtx = ? 0 ? , will set txon bit (csr0 bit 4) if strt (csr0 bit 1) is asserted. read/write accessible only when stop bit is set. 0 drx disable receiver results in pcnet-32 controller not accessing the receive descriptor ring and therefore all receive frame data are ignored. drx = ? 0 ? , will set rxon bit (csr0 bit 5) if strt (csr0 bit 1) is asserted. read/write accessible only when stop bit is set. csr16: initialization block address lower bit name description this register is an alias of the lo- cation csr1. accesses to/from this register are equivalent to access to csr1. 31-16 res reserved locations. written as zeros and read as undefined. 15-0 iadr lower 16 bits of the address of the initialization block. this register is an alias of csr1. whenever this register is written, csr1 is updated with csr16 ? s contents. read/write accessible only when the stop bit in csr0 is set. unaffected by reset. csr17: initialization block address upper bit name description this register is an alias of the lo- cation csr2. accesses to/from this register are equivalent to access to csr2. 31-16 res reserved locations. written as zeros and read as undefined. 15-0 iadr upper 16 bits of the address of the initialization block. this register is an alias of csr2. whenever this register is written, csr2 is updated with csr17 ? s contents. read/write accessible only when the stop bit in csr0 is set. unaffected by reset. csr18: current receive buffer address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 crba contains the lower 16 bits of the current receive buffer address at which the pcnet-32 controller will store incoming frame data. read/write accessible only when stop bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr19: current receive buffer address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 crba contains the upper 16 bits of the current receive buffer address at which the pcnet-32 controller will store incoming frame data. read/write accessible only when stop bit is set. these bits are unaffected by h_reset, s_reset, or stop. csr20: current transmit buffer address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 cxba contains the lower 16 bits of the current transmit buffer address from which the pcnet-32 controller is transmitting. read/write accessible only when stop bit is set. csr21: current transmit buffer address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 cxba contains the upper 16 bits of the current transmit buffer address from which the pcnet-32 controller is transmitting. read/write accessible only when stop bit is set.
AM79C965A 137 csr22: next receive buffer address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nrba contains the lower 16 bits of the next receive buffer address to which the pcnet-32 controller will store incoming frame data. read/write accessible only when stop bit is set. csr23: next receive buffer address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nrba contains the upper 16 bits of the next receive buffer address to which the pcnet-32 controller will store incoming frame data. read/write accessible only when stop bit is set. csr24: base address of receive ring lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 badr contains the lower 16 bits of the base address of the receive ring. read/write accessible only when stop bit is set. csr25: base address of receive ring upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 badr contains the upper 16 bits of the base address of the receive ring. read/write accessible only when stop bit is set. csr26: next receive descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nrda contains the lower 16 bits of the next rdre address pointer. read/write accessible only when stop bit is set. csr27: next receive descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nrda contains the upper 16 bits of the next rdre address pointer. read/write accessible only when stop bit is set. csr28: current receive descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 crda contains the lower 16 bits of the current rdre address pointer. read/write accessible only when stop bit is set. csr29: current receive descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 crda contains the upper 16 bits of the current rdre address pointer. read/write accessible only when stop bit is set. csr30: base address of transmit ring lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 badx contains the lower 16 bits of the base address of the transmit ring. read/write accessible only when stop bit is set. csr31: base address of transmit ring upper bit name description 31-16 res reserved locations. read and written as zero. 15-0 badx contains the upper 16 bits of the base address of the transmit ring. read/write accessible only when stop bit is set. csr32: next transmit descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined.
138 AM79C965A 15-0 nxda contains the lower 16 bits of the next tdre address pointer. read/write accessible only when stop bit is set. csr33: next transmit descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nxda contains the upper 16 bits of the next tdre address pointer. read/write accessible only when stop bit is set. csr34: current transmit descriptor address lower bit name description 31-16 res reserved locations. read and written as zero. 15-0 cxda contains the lower 16 bits of the current tdre address pointer. read/write accessible only when stop bit is set. csr35: current transmit descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 cxda contains the upper 16 bits of the current tdre address pointer. read/write accessible only when stop bit is set. csr36: next next receive descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nnrda contains the lower 16 bits of the next next receive descriptor ad- dress pointer. read/write accessible only when stop bit is set. csr37: next next receive descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nnrda contains the upper 16 bits of the next next receive descriptor ad- dress pointer. read/write accessible only when stop bit is set. csr38: next next transmit descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nnxda contains the lower 16 bits of the next next transmit descriptor ad- dress pointer. read/write accessible only when stop bit is set. csr39: next next transmit descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nnxda contains the upper 16 bits of the next next transmit descriptor ad- dress pointer. read/write accessible only when stop bit is set. csr40: current receive status and byte count lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved locations. read and written as zero. 11-0 crbc current receive byte count. this field is a copy of the bcnt field of rmd2 of the current receive descriptor. read/write accessible only when stop bit is set. csr41: current receive status and byte count upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-8 crst current receive status. this field is a copy of bits 15:8 of rmd1 of the current receive descriptor.
AM79C965A 139 read/write accessible only when stop bit is set. 7-0 res reserved locations. read and written as zero. csr42: current transmit status and byte count lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved locations. read and written as zero. 11-0 cxbc current transmit byte count. this field is a copy of the bcnt field of tmd2 of the current transmit descriptor. read/write accessible only when stop bit is set. csr43: current transmit status and byte count upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-8 cxst current transmit status. this field is a copy of bits 15:8 of tmd1 of the current transmit descriptor. read/write accessible only when stop bit is set. 7-0 res reserved locations. read and written as zero. csr44: next receive status and byte count lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved locations. read and written as zero. 11-0 nrbc next receive byte count. this field is a copy of the bcnt field of rmd2 of the next receive descriptor. read/write accessible only when stop bit is set. csr45: next receive status and byte count upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-8 nrst next receive status. this field is a copy of bits 15:8 of rmd1 of the next receive descriptor. read/write accessible only when stop bit is set. 7-0 res reserved locations. read and written as zero. csr46: poll time counter bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 poll poll time counter. this counter is incremented by the pcnet-32 controller microcode and is used to trigger the descriptor ring polling operation of the pcnet-32 controller. read/write accessible only when stop bit is set. csr47: polling interval bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 pollint polling interval. this register contains the time that the pcnet-32 controller will wait between successive polling operations. the pollint value is expressed as the two ? s complement of the desired interval, where each bit of pollint represents 1 bclk period of time (486 and vl-bus modes; 2 bclk 386 mode). pollint[3:0] are ignored. (pollint[16] is implied to be a one, so pollint[15] is significant, and does not represent the sign of the two ? s complement pollint value.) the default value of this register is 0000. this corresponds to a polling interval of 65,536 bclk periods (486 and vl-bus modes; 131,072 bclk 386 mode). the pollint value of 0000 is created during the microcode initialization routine, and therefore might not be seen when reading csr47 after h_reset or s_reset. if the user desires to program a value for pollint other than the default, then the correct procedure is to first set init only in csr0. then, when the initialization
140 AM79C965A sequence is complete, the user must set stop in csr0. then the user may write to csr47 and then set strt in csr0. in this way, the default value of 0000 in csr47 will be overwritten with the desired user value. if the user does not use the standard initialization procedure (standard implies use of an in- itialization block in memory and setting the init bit of csr0), but instead, chooses to write directly to each of the registers that are involved in the init operation, then it is imperative that the user also write 0000 0000 to csr47 as part of the alternative initialization sequence. read/write accessible only when stop bit is set. csr48: temporary storage 2 lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp2 lower 16 bits of a temporary storage location. read/write accessible only when stop bit is set. csr49: temporary storage 2 upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp2 upper 16 bits of a temporary storage location. read/write accessible only when stop bit is set. csr50: temporary storage 3 lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp3 lower 16 bits of a temporary storage location. read/write accessible only when stop bit is set. csr51: temporary storage 3 upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp3 upper 16 bits of a temporary storage location. read/write accessible only when stop bit is set. csr52: temporary storage 4 lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp4 lower 16 bits of a temporary storage location. read/write accessible only when stop bit is set. csr53: temporary storage 4 upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp4 upper 16 bits of a temporary storage location. read/write accessible only when stop bit is set. csr54: temporary storage 5 lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp5 lower 16 bits of a temporary storage location. read/write accessible only when stop bit is set. csr55: temporary storage 5 upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp5 upper 16 bits of a temporary storage location. read/write accessible only when stop bit is set. csr56: temporary storage 6 lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp6 lower 16 bits of a temporary storage location. read/write accessible only when stop bit is set.
AM79C965A 141 csr57: temporary storage 6 upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp6 upper 16 bits of a temporary storage location. read/write accessible only when stop bit is set. csr58: software style bit name description this register is an alias of the lo- cation bcr20. accesses to/from this register are equivalent to accesses to bcr20. 31-10 res reserved locations. written as zeros and read as undefined. 9 csrpcnet csr pcnet-isa configuration bit. when set, this bit indicates that the pcnet-32 controller register bits of csr4 and csr3 will map directly to the csr4 and csr3 bits of the pcnet-isa (am79c960) device. when cleared, this bit indicates that pcnet-32 controller register bits of csr4 and csr3 will map directly to the csr4 and csr3 bits of the ilacc (am79c900) device. the value of csrpcnet is de- termined by the pcnet-32 con- troller. csrpcnet is read only by the host. the pcnet-32 controller uses the setting of the software style register (bcr20[7:0]/csr58[7:0]) to determine the value for this bit. csrpcnet is set to a one by h_reset or s_reset and is not affected by stop. 8 ssize32 software size 32 bits. when set, this bit indicates that the pcnet-32 controller utilizes amd 79c900 (ilacc) software structures. in particular, initialization block and transmit and receive descriptor bit maps are affected. when cleared, this bit indicates that the pcnet-32 controller utilizes amd pcnet-isa software structures. note : regardless of the setting of ssize32, the initialization block must always begin on a double-word boundary. the value of ssize32 is deter- mined by the pcnet-32 controller. ssize32 is read only by the host. the pcnet-32 controller uses the setting of the software style register (bcr20, bits 7-0) to determine the value for this bit. ssize32 is cleared by h_reset or s_reset and is not affected by stop. if ssize32 is reset, then bits iadr[31:24] of csr2 will be used to generate values for the upper 8 bits of the 32 bit address bus during master accesses initiated by the pcnet-32 controller. this action is required, since the 16-bit software structures specified by the ssize32=0 setting will yield only 24 bits of address for pcnet-32 controller bus master accesses. if ssize32 is set, then the software structures that are common to the pcnet-32 controller and the host system will supply a full 32 bits for each address pointer that is needed by the pcnet-32 controller for performing master accesses. the value of the ssize32 bit has no effect on the drive of the upper 8 address pins. the upper 8 address pins are always driven, regardless of the state of the ssize32 bit. note that the setting of the ssize32 bit has no effect on the defined width for i/o resources. i/o resource width is determined by the state of the dwio bit. 7-0 swstyle software style register. the value in this register determines the ? style ? of i/o and memory resources that are used by the pcnet-32 controller. the s/w resource style selection will affect the interpretation of a few bits within the csr space and the width of the descriptors and initialization block. see table 43. all pcnet-32 controller csr bits and bcr bits and all descriptor, buffer and initialization block entries not cited in the table above are unaffected by the software style selection and are therefore always fully functional as specified in the bcr and csr sections.
142 AM79C965A read/write accessible only when stop bit is set. the swstyle register will contain the value 00h following h_reset or s_reset and will be unaffected by stop. table 43. software resource style selection csr59: ir register bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 irreg contains the value 0105. this register always contains the same value. it is not writable. read accessible only when stop bit is set. csr60: previous transmit descriptor address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 pxda contains the lower 16 bits of the previous tdre address pointer. pcnet-32 controller has the ca- pability to stack multiple transmit frames. read/write accessible only when stop bit is set. csr61: previous transmit descriptor address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 pxda contains the upper 16 bits of the previous tdre address pointer. pcnet-32 controller has the ca- pability to stack multiple transmit frames. read/write accessible only when stop bit is set. csr62: previous transmit status and byte count lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved locations. read and written as zero. accessible only when stop bit is set. 11-0 pxbc previous transmit byte count. this field is a copy of the bcnt field of tmd2 of the previous transmit descriptor. read/write accessible only when stop bit is set. csr63: previous transmit status and byte count upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-8 pxst previous transmit status. this field is a copy of bits 15:8 of tmd1 of the previous transmit descriptor. read/write accessible only when stop bit is set. 7-0 res reserved locations. read and written as zero. accessible only when stop bit is set. swstyle[7:0] (hex) style name csrpcnet ssize32 altered bit interpretations 00 lance/ pcnet-isa 1 0 all csr4 bits will function as defined in the csr4 section. tmd1[29] functions as add_fcs 01 ilacc 0 1 csr4[9:8], csr4[5:4] and csr4[1:0] will have no function , but will be writeable and readable. csr4[15:10], csr4[7:6] and csr4[3:2] will function as defined in the csr4 section. tmd1[29] becomes no_fcs. 02 pcnet-32 1 1 all csr4 bits will function as defined in the csr4 section. tmd1[29] functions as add_fcs all other combinations reserved undefined undefined undefined
AM79C965A 143 csr64: next transmit buffer address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nxba contains the lower 16 bits of the next transmit buffer address from which the pcnet-32 controller will transmit an outgoing frame. read/write accessible only when stop bit is set. csr65: next transmit buffer address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 nxba contains the upper 16 bits of the next transmit buffer address from which the pcnet-32 controller will transmit an outgoing frame. read/write accessible only when stop bit is set. csr66: next transmit status and byte count lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved locations. read and written as zero. accessible only when stop bit is set. 11-0 nxbc next transmit byte count. this field is a copy of the bcnt field of tmd2 of the next transmit descriptor. read/write accessible only when stop bit is set. csr67: next transmit status and byte counter upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-8 nxst next transmit status. this field is a copy of bits 15:8 of tmd1 of the next transmit descriptor. read/write accessible only when stop bit is set. 7-0 res reserved locations. read and written as zero. accessible only when stop bit is set. csr68: transmit status temporary storage lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 xstmp lower 16 bits of a transmit status temporary storage location. read/write accessible only when stop bit is set. csr69: transmit status temporary storage upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 xstmp transmit status temporary storage location. read/write accessible only when stop bit is set. csr70: temporary storage lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp8 lower 16 bits of a temporary storage location. read/write accessible only when stop bit is set.
144 AM79C965A csr71: temporary storage upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 tmp8 upper 16 bits of a temporary storage location. read/write accessible only when stop bit is set. csr72: receive ring counter bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 rcvrc receive ring counter location. contains a two ? s complement binary number used to number the current receive descriptor. this counter interprets the value in csr76 as pointing to the first descriptor. a counter value of zero corresponds to the last descriptor in the ring. read/write accessible only when stop bit is set. csr74: transmit ring counter bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 xmtrc transmit ring counter location. contains a two ? s complement binary number used to number the current transmit descriptor. this counter interprets the value in csr78 as pointing to the first descriptor. a counter value of zero corresponds to the last descriptor in the ring. read/write accessible only when stop bit is set. csr76: receive ring length bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 rcvrl receive ring length. contains the two ? s complement of the receive descriptor ring length. this register is initialized during the pcnet-32 controller initialization routine based on the value in the rlen field of the initialization block. however, this register can be manually altered. the actual receive ring length is defined by the current value in this register. the ring length can be defined as any value from 1 to 65535. read/write accessible only when stop bit is set. csr78: transmit ring length bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 xmtrl transmit ring length. contains the two ? s complement of the transmit descriptor ring length. this register is initialized during the pcnet-32 controller initialization routine based on the value in the tlen field of the initialization block. however, this register can be manually altered. the actual transmit ring length is defined by the current value in this register. the ring length can be defined as any value from 1 to 65535. read/write accessible only when stop bit is set. csr80: burst and fifo threshold control bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-14 res reserved locations. read as ones and written as zero. 13-12 rcvfw[1:0] receive fifo watermark. rcvfw controls the point at which receive dma is requested in relation to the number of received bytes in the receive fifo. rcvfw specifies the number of bytes which must be present (once the frame has been verified as a non-runt) before receive dma is requested. note however that in order for receive dma to be performed for a new frame, at least 64 bytes must have been received. this effectively avoids having to react to receive frames which are runts or suffer a collision during the slot time (512 bit times). if the runt packet accept feature is enabled, receive dma will be requested as soon as either the rcvfw threshold is reached, or a complete valid receive frame is
AM79C965A 145 detected (regardless of length). rcvfw is set to a value of 10 (64 bytes) after h_reset or s_reset and is unaffected by stop. read/write accessible only when stop bit is set. certain combinations of watermark programming and linbc (bcr18[2- 0]) programming may create situations where no linear bursting is possible, or where the fifo may be excessively read or excessively written. such combinations are declared as illegal. combinations of watermark set- tings and linbc settings must obey the following relationship: watermark (in bytes) ? linbc (in bytes) combinations of watermark and linbc settings that violate this rule may cause unexpected behavior. 11-10 xmtsp[1:0]transmit start point. xmtsp controls the point at which pre- amble transmission attempts commence in relation to the number of bytes written to the transmit fifo for the current transmit frame. when the entire frame is in the fifo, transmission will start regardless of the value in xmtsp. xmtsp is given a value of 10 (64 bytes) after h_reset or s_reset and is unaffected by stop. regardless of xmtsp, the fifo will not internally over write its data until at least 64 bytes (or the entire frame if <64 bytes) have been transmitted onto the network. this ensures that for collisions within the slot time window, transmit data need not be rewritten to the transmit fifo, and retries will be handled autonomously by the mac. this bit is read/write accessible only when the stop bit is set. 9-8 xmtfw[1:0] transmit fifo watermark. xmtfw specifies the point at which transmit dma stops, based upon the number of write cycles that could be performed to the transmit fifo without fifo overflow. transmit dma is allowed at any time when the number of write cycles specified by smtfw could be executed without causing transmit fifo overflow. xmtfw is set to a value of 00b (8 cycles) after h_reset or s_reset and is unaffected by stop. read/write accessible only when stop bit is set. certain combinations of watermark programming and linbc programming may create situations where no linear bursting is possible, or where the fifo may be excessively read or excessively written. such combinations are declared as illegal. combinations of watermark set- tings and linbc settings must obey the following relationship: watermark (in bytes) ? linbc (in bytes) combinations of watermark and linbc settings that violate this rule may cause unexpected behavior. 7-0 dmacr[7:0] dma cycle register. this regis- ter contains the maximum allow- able number of transfers to system memory that the bus interface will perform during a single dma cycle. the cycle register is not used to limit the number of transfers during descriptor transfers. a value of zero will be interpreted as one transfer. rcvfw[1:0] bytes received 00 01 10 11 16 32 64 reserved xmtsp[1:0] bytes written 00 01 10 11 4 16 64 112 xmtfw[1:0] write cycles 00 01 10 11 8 16 32 reserved
146 AM79C965A during h_reset or s_reset a value of 16 is loaded in the burst register. if the dmaplus bit in csr4 is set, the dma cycle register is disabled. when the entst bit in csr4 is set, all writes to this register will automatically perform a decrement cycle. when the cycle register times out in the middle of a linear burst, the linear burst will continue until a legal starting address is reached, and then the pcnet-32 controller will relinquish the bus. therefore, if linear bursting is enabled, and the user wishes the pcnet-32 controller to limit bus activity to desired_max transfers, then the cycle register should be programmed to a value of: burst count setting = (desired_ max div (length of linear burst in transfers) x length of linear burst in transfers where div is the operation that yields the integer portion of the 3 operation. note : if either linear burst write is enabled, the value has to be greater than or equal to 4. read/write accessible only when the stop bit is set. csr82: bus activity timer bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 dmabat bus activity timer register. if the timer bit in csr4 is set, this register contains the maximum allowable time that pcnet-32 controller will take up on the system bus during fifo data transfers for a single dma cycle. the bus activity timer register does not limit the number of transfers during descriptor transfers. the dmabat value is interpreted as an unsigned number with a resolution of 0.1 s. for instance, a value of 51 s would be programmed with a value of 510. if the timer bit in csr4 is set, dmabat is enabled and must be initialized by the user. the dmabat register is undefined until written. when the entst bit in csr4 is set, all writes to this register will automatically perform a decrement cycle. if the user has not enabled the linear burst function and wishes the pcnet-32 controller to limit bus activity to max_time s, then the burst timer should be programmed to a value of: max_time- [(11 + 4w) x (bclk period)], where w = wait states. if the user has enabled the linear burst function and wishes the pcnet-32 controller to limit bus activity to max_time s, then the burst timer should be programmed to a value of: max_time- [((3+lbs) x w + 10 + lbs) x (bclk period)], where w = wait states and lbs = linear burst size in number of transfers per sequence. this is because the pcnet-32 controller may use as much as one ? linear burst size ? plus three transfers in order to complete the linear burst before releasing the bus. as an example, if the linear burst size is four transfers, and the number of wait states for the system memory is two, and the bclk period is 30 ns and the max time allowed on the bus is 3 s, then the burst timer should be programmed for: max_time- [((3+lbs) x w + 10 + lbs) x (bclk period)], 3 ms - [(3 + 4) x 2 +10 + 4) x (30 ns)] = 3 ms - (28 x 30 ns) = 3 - 0.84 ms = 2.16 ms. then, if the pcnet-32 controller ? s bus activitytimer times out after 2.16 s when the pcnet-32 controller has completed all but the last three transfers of a linear burst, the pcnet-32 controller may take as much as 0.84 s to complete the bursts and release the bus. the bus release will occur at 2.16 + 0.84 = 3 ms.
AM79C965A 147 a value of zero will in the dmabat register with the timer bit in csr4 set to one will produce single linear burst sequences per bus master period when programmed for linear burst mode, and will yield sets of three transfers when not pro- grammed for linear burst mode. the bus activity timer is set to a value of 00h after h_reset or s_reset and is unaffected by stop. read/write accessible only when stop bit is set. csr84: dma address lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 dmaba dma address register. this register contains the lower 16 bits of the address of system memory for the current dma cycle. the bus interface unit controls the address register by issuing increment commands to increment the memory address for sequential operations. the dmaba register is undefined until the first pcnet-32 controller dma operation. when the entst bit in csr4 is set, all writes to this register will automatically perform an increment cycle. read/write accessible only when stop bit is set. csr85: dma address upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 dmaba dma address register. this register contains the upper 16 bits of the address of system memory for the current dma cycle. the bus interface unit controls the address register by issuing increment commands to increment the memory address for sequential operations. the dmaba register is undefined until the first pcnet-32 controller dma operation. when the entst bit in csr4 is set, all writes to this register will automatically perform an increment cycle. read/write accessible only when stop bit is set. csr86: buffer byte counter bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-12 res reserved, read and written with ones. 11-0 dmabc dma byte count register. con- tains a two ? s complement binary number of the current size of the remaining transmit or receive buffer in bytes. this register is incremented by the bus interface unit. the dmabc register is undefined until written. when entst (csr4.15) is asserted, all writes to this register will automatically perform an increment cycle. read/write accessible only when stop bit is set. csr88: chip id lower bit name description this register is exactly the same as the chip id register in the jtag description. 31 - 28 version. this 4-bit pattern is silicon-revision dependent. 27 - 12 part number. the 16-bit code for the pcnet-32 controller is 0010 0100 0011 0000b. 11 - 1 manufacturer id. the 11-bit manufacturer code for amd is 00000000001b. this code is per the jedec publication 106-a. 0 always a logic 1. csr89: chip id upper bit name description the lower 16 bits of this register are exactly the same as the upper 16 bits of the chip id register in the jtag description, which are exactly the same as the upper 16 bits of csr88. 31 - 16 reserved locations. read as undefined. 15 - 12 version. this 4-bit pattern is silicon- revision dependent.
148 AM79C965A 11 - 0 upper 12 bits of the pcnet-32 controller part number, i.e. 0010 0100 0011b. csr92: ring length conversion bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 rcon ring length conversion register. this register performs a ring length conversion from an encoded value as found in the initialization block to a two ? s complement value used for internal counting. by writing bits 15- 12 with an encoded ring length, a tw o ? s complemented value is read. the rcon register is undefined until written. read/write accessible only when stop bit is set. csr94: transmit time domain reflectometry count bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-10 res reserved locations. read and written as zero. 9-0 xmttdr time domain reflectometry re- flects the state of an internal counter that counts from the start of transmission to the occurrence of loss of carrier. tdr is incremented at a rate of 10 mhz. read accessible only when stop bit is set. write operations are ignored. xmttdr is cleared by h_reset or s_reset. csr96: bus interface scratch register 0 lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 scr0 this register is shared between the buffer management unit and the bus interface unit. all descriptor data communications between the biu and bmu are written and read through scr0 and scr1 registers. the scr0 register is undefined until written. read/write accessible only when stop bit is set. csr97: bus interface scratch register 0 upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 s cr0 this register is shared between the buffer management unit and the bus interface unit. all descriptor data communications between the biu and bmu are written and read through scr0 and scr1 registers. the scr0 register is undefined until written. read/write accessible only when stop bit is set. csr98: bus interface scratch register 1 lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 scr1 this register is shared between the buffer management unit and the bus interface unit. all descriptor data communications between the biu and bmu are written and read through scr0 and scr1 registers. read/write accessible only when stop bit is set. csr99: bus interface scratch register 1 upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 scr1 this register is shared between the buffer management unit and the bus interface unit. all descriptor data communications between the biu and bmu are written and read through scr0 and scr1 registers. read/write accessible only when stop bit is set. csr100: bus time-out bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 merrto this register contains the value of the longest allowable bus latency (interval between assertion of hold and assertion of hlda) that a slave device may insert into a pcnet-32 controller master transfer. if this value of bus latency is exceeded,
AM79C965A 149 then a merr will be indicated in csr0, bit 11, and an interrupt may be generated, depending upon the setting of the merrm bit (csr3, bit 11) and iena bit (csr0[6]). the value in this register is inter- preted as a number of xtal1 3 2 clock periods. (i.e. the value in this register is given in 0.1 ms in- crements.) for example, the value 0200h (512 decimal) will cause a merr to be indicated after 51.2 s of bus latency. a value of zero will allow an infi- nitely long bus latency. i.e. a value of zero will never give a bus time-out error. a non-zero value is interpreted as an unsigned number of bclk cycles. this register is set to 0200 by h_reset or s_reset and is unaffected by stop. read/write accessible only when stop bit is set. csr104: swap register lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 swap this register performs word and byte swapping depending upon if 32-bit or 16-bit internal write operations are performed. this register is used internally by the biu/ bmu as a word or byte swapper. the register is externally accessible for test reasons only. csr104 holds the lower 16 bits and csr105 holds the upper 16 bits. read/write accessible only when stop bit is set. csr105: swap register upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 swap this register performs word and byte swapping depending upon if 32-bit or 16-bit internal write operations are performed. this register is used internally by the biu/ bmu as a word or byte swapper. the register is externally accessible for test reasons only. csr104 holds the lower 16 bits and csr105 holds the upper 16 bits. read/write accessible only when stop bit is set. csr108: buffer management scratch lower bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 bmscr the buffer management scratch register is used for assembling receive and transmit status. this register is also used as the primary scan register for buffer management test modes. bmscr register is undefined until written. read/write accessible only when stop bit is set. csr109: buffer management scratch upper bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 bmscr the buffer management scratch register is used for assembling receive and transmit status. this register is also used as the primary scan register for buffer management test modes. bmscr register is undefined until written. read/write accessible only when stop bit is set. csr112: missed frame count bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 mfc missed frame count. indicates the number of missed frames. mfc will roll over to a count of zero from the value 65535. the mfco bit of csr4 (bit 8) will be set each time that this occurs. this register is always readable and is cleared by h_reset or s_reset or stop. a write to this register performs an increment when the entst bit in csr4 is set. csr114: receive collision count bit name description
150 AM79C965A 31-16 res reserved locations. written as zeros and read as undefined. 15-0 rcc receive collision count. indicates the total number of collisions encountered by the receiver since the last reset of the counter. rcc will roll over to a count of zero from the value 65535. the rcvcco bit of csr4 (bit 5) will be set each time that this occurs. the rcc value is read accessible at all times, regardless of the value of the stop bit. write operations are ignored. rcc is cleared by h_reset or s_reset or by setting the stop bit. a write to this register performs an increment when the entst bit in csr4 is set. csr122: receive frame alignment control bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-1 res reserved locations, written as zeros and read as undefined. 0 rcvalgn receive frame align. when set, this bit forces the data field of iso 8802-3 (ieee/ansi 802.3) frames to align to 0 mod 4 address boundaries (i.e. double word aligned addresses). it is important to note that this feature will only function correctly if all receive buffer boundaries are double-word aligned and all receive buffers have 0 mod 4 lengths. in order to accomplish the data alignment, the pcnet-32 controller simply inserts two bytes of random data at the beginning of the receive packet (i.e. before the iso 8802-3 (ieee/ ansi 802.3) destination address field). the mcnt field reported to the receive descriptor will not include the extra two bytes. rcvalgn is cleared by h_reset or s_reset and is not affected by stop. read/write accessible only when stop bit is set. csr124: buffer management test bit name description this register is used to place the bmu/biu into various test mode to support test/debug. this register is writable only when the entst bit in csr4 and the stop bit of csr0 are both set. the functions controlled by this register are enabled only if the entst bit is set. entst should be set before anything in csr124 can be pro- grammed, including runtacc. entst must be reset after writing to csr124 before writing to any other register. if it is done, the pcnet-32 controller will not run. all bits in this register or cleared by h_reset or s_reset and are not affected by stop. 31-16 res reserved locations. written as zeros and read as undefined. 15-5 res reserved locations. read and written as zero. 4 gpsien this bit places the pcnet-32 controller in the gpsi mode. this mode will reconfigure the system interface address pins so that the gpsi port is exposed. this allows bypassing the mendec t-mau logic. the gpsi mode may also be enabled by test shadow bits setting of bcr18, bits 4 and 3 as in table 44. see table 45 for pin reconfiguration in gpsi mode. note that when the gpsi mode is invoked, only the lower 24 bits of the address bus are available. during software relocatable mode the led2 pin must be pulled low. ioaw24 (bcr21[8]) must be set to allow slave operations. during master accesses in gpsi mode, the pcnet-32 controller will not drive the upper 8 bits of the address bus with address information. 3 rpa runt packet accept. this bit forces the receive logic to accept runt packets (packets shorter than 64 bytes). the state of the rpa bit can be changed only when the device is
AM79C965A 151 in the test mode (when the entst bit in csr4 is set to one). to enable rpa, software must first write a one to the entst bit. next, software must write a one to the rpa bit. finally, software must write a zero to the entst bit to take the device out of test mode operation. once the rpa bit has been set to one, the device will remain in the runt packet accept mode until the rpa bit is cleared to zero. 2-0 res reserved locations. written as zeros and read as undefined. table 44. gpsi mode selection table 45. gpsi pin configurations tstshdw value (bcr18[4:3]) pvalid (bcr19[15]) gpsien operating mode 00 x 0 normal operating mode 10 1 x gpsi mode 01 1 0 reserved 11 1 x reserved xx 0 0 normal operating mode xx 0 1 gpsi mode gpsi function gpsi i/o type lance gpsi pin ilacc gpsi pin pcnet-32/ pcnet-isa gpsi pin pcnet-32 pin number pcnet-32 normal pin function transmit data o tx txd txdat 132 a31 transmit enable o tena rts txen 133 a30 transmit clock i tclk txc stdclk 134 a29 collision i clsn cdt clsn 137 a28 receive carrier sense i rena crs rxcrs 138 a27 receive clock i rclk rxc srdclk 140 a26 receive data i rx rxd rxdat 141 a25
152 AM79C965A bus configuration registers the bus configuration registers (bcr) are used to program the configuration of the bus interface and other special features of the pcnet-32 controller that are not related to the ieee 8802-3 mac functions. the bcrs are accessed by first setting the appropriate rap value, and then by performing a slave access to the bdp. all bcr registers are 16 bits in width in wio mode and 32 bits in width in dwio mode. the upper 16 bits of all bcr registers is undefined when in dwio mode. these bits should be written as zeros and should be treated as undefined when read. the ? default ? value given for any bcr is the value in the register after h_reset, and is hexadecimal unless otherwise stated. bcr register values are unaffected by s_reset and are unaffected by the assertion of the stop bit. note that several registers have no default value. bcr3 and bcr8-bcr15 are reserved and have undefined values. bcr2, bcr16, bcr17 and bcr21 are not observable without first being programmed, either through the eeprom read operation or through the software relocatable mode. therefore, the only observable values for these registers are those that have been programmed and a default value is not applicable. see table 46. writes to those registers marked as ? reserved ? will have no effect. reads from these locations will produce undefined values. table 46. bus configuration registers key: srm = software relocatable mode * registers marked with an asterisk (*) have no default value, since they are not observable without first being programmed, either through the eeprom read operation or through the software relocatable mode. therefore, the only observable values for these registers are those that have been programmed and a default value is not applicable. bcr0: master mode read active bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15-0 msrda reserved locations. after h_reset, the value in this register will be 0005. the settings of this register will have no effect on any pcnet-32 controller function. writes to this register have no effect on the operation of the pcnet-32 controller and will not alter the value that is read. bcr1: master mode write active bit name description 31-16 res reserved locations. written as zeros and read as undefined. rap addr. mnemonic default (hex) name programmability user eeprom srm 1 mswra 0005 master mode write active no no no 2 mc n/a* miscellaneous configuration yes yes yes 3 reserved n/a no no no 4 lnkst 00c0 link status (default) yes no no 5 led1 0084 receive (default) yes no no 6 led2 0088 receive polarity (default) yes no no 7 led3 0090 transmit (default) yes no no 8 ? 15 reserved n/a no no no 16 iobasel n/a* i/o base address lower yes yes yes 17 iobaseu n/a* i/o base address upper yes yes yes 18 bsbc 2101 burst size and bus control yes yes no 19 eecas 0002 eeprom control and status yes no no 20 swstyle 0000 software style yes no no 21 intcon n/a* interrupt control yes yes yes
AM79C965A 153 15-0 mswra reserved locations. after h_reset, the value in this register will be 0005. the settings of this register will have no effect on any pcnet-32 controller function. writes to this register have no effect on the operation of the pcnet-32 controller and will not alter the value that is read. bcr2: miscellaneous configuration bit name description note that all bits in this register are programmable through the eeprom pread operation and through the software relocatable mode operation. 31-16 res reserved locations. written as zeros and read as undefined. 15 res reserved location. written and read as zero. 14 t-mauloop when set, this bit allows external loopback packets to pass onto the network through the t-mau interface, if the t-mau interface has been selected. if the t-mau interface has not been selected, then this bit has no effect. this bit is reset to zero by h_reset and is unaffected by s_reset or stop. 13-9 res reserved locations. written and read as zero. 8 iesrwe ieee shadow ram write enable. the pcnet-32 controller contains a shadow ram on board for storage of the ieee address following the serial eeprom read operation. ac- cesses to aprom i/o resources will be directed toward this ram. when iesrwe is set to a one, then 32-bit and 16-bit write access to the shadow ram will be enabled. when iesrwe is set to a zero, then 32-bit and 16-bit write access to the shadow ram will be disabled. at no time are 8-bit write accesses to the shadow ram allowed. this bit is reset to zero by h_reset and is unaffected by s_reset or stop. 7 intlevel interrupt level. this bit allows the interrupt output signals to be programmed for edge or level- sensitive applications. when intlevel is set to a zero, the selected interrupt pin is configured for edge sensitive operation. in this mode, an interrupt request is signaled by a high level driven on the selected interrupt pin by the pcnet-32 controller. when the interrupt is cleared, the selected interrupt pin is driven to a low level by the pcnet-32 controller. this mode is intended for systems that do not allow interrupt channels to be shared by multiple devices. when intlevel is set to a one, the selected interrupt pin is configured for level sensitive operation. in this mode, an interrupt request is signaled by a low level driven on the selected interrupt pin by the pcnet-32 controller. when the interrupt is cleared, the selected interrupt pin is floated by the pcnet-32 controller and allowed to be pulled to a high level by an external pull-up device. this mode is intended for systems which allow the interrupt signal to be shared by multiple devices. this bit is reset to zero by h_reset and is unaffected by r_reset or stop. 6-4 res reserved locations. written and read as zero. 3 eadisel eadi select. when set, this bit configures three of the four led outputs to function as the outputs of an eadi interface. led1 becomes sfbd, led2 becomes srdclk and ledpre3 becomes srd. lnkst continues to function as an led output. in addition to these reassignments, the intr2 pin will be reassigned to function as the ear pin. this bit is reset to zero by h_reset and is unaffected by s_reset or stop. 2 awake auto-wake. if lnkst is set and awake = ? 1 ? , the 10base-t re- ceive circuitry is active during sleep
154 AM79C965A and listens for link pulses. lnkst indicates link status and goes active if the 10base-t port comes of out of ? link fail ? state. this lnkst pin can be used by external circuitry to re-enable the pcnet-32 controller and/or other devices. when awake = ? 0 ? , the auto-wake circuitry is disabled. this bit only has meaning when the 10base-t network interface is selected. this bit is reset to zero by h_reset and is unaffected by s_reset or stop. 1 asel auto select. when set, the pcnet-32 controller will auto- matically select the operating media interface port, unless the user has selected gpsi mode through appropriate programming of the portsel bits of the mode register (csr15). if gpsi mode has not been selected and asel has been set to a one, then when the 10base-t transceiver is in the link pass state (due to receiving valid frame data and/or link test pulses or the dlnktst bit is set), the 10base-t port will be used. if gpsi mode has not been selected and asel has been set to a one, then when the 10base-t port is port will be used. switching between the ports will not occur during transmission, to avoid any type of fragment generation. when asel is set to one, link beat pulses will be transmitted on the 10base-t port, regardless of the state of link status. when asel is reset to zero, link beat pulses will only be transmitted on the 10base-t port when the portsel bits of the mode register (csr15) have selected 10base-t as the active port. when asel is set to a zero, then the selected network port will be determined by the settings of the portsel bits of csr15. the asel bit is reset to one by h_reset and is unaffected by s_reset or stop. the network port configuration are as follows: 0 res reserved location. the default value of this bit is a zero. writing a one to this bit has no effect on device function. existing drivers may write a one to this bit, but new drivers should write a zero to this bit. bcr4: link status led bit name description bcr4 controls the function(s) that the lnkst pin displays. multiple functions can be simultaneously enabled on this led pin. the led display will indicate the logical or of the enabled functions. bcr4 defaults to link status (lnkst) with pulse stretcher enabled (pse = 1) and is fully programmable. the default setting after h_reset for the lnkst register is 00c0h. the lnkst register value is unaffected by s_reset or stop. 31-16 res reserved locations. written as zeros and read as undefined. 15 ledout this bit indicates the current (non- stretched) value of the led output pin. a value of one in this bit indicates that the or of the enabled signals is true. the logical value of the ledout status signal is determined by the settings of the individual status enable bits of the led register (bits 6-0). this bit is read only by the host, and is unaffected by h_reset or s_reset or stop. this bit is valid only if the network link status is pass. portsel(1:0) asel (bcr2[1]) link status (of 10base-t) network port 0x 1 0 aui 0x 1 1 10base-t 0 0 0 x aui 0 1 0 x 10base-t 1 0 x x gpsi 1 1 x x reserved
AM79C965A 155 14 ledpol led polarity. when this bit has the value zero, then the led pin will be driven to a low level whenever the or of the enabled signals is true and the led pin will be floated and allowed to float high whenever the or of the enabled signals is false (i.e. the led output will be an open drain output and the output value will be the inverse of the ledout status bit). when this bit has the value one, then the led pin will be driven to a high level whenever the or of the enabled signals is true and the led pin will be driven to a low level whenever the or of the enabled signals is false (i.e. the led output will be a totem pole output and the output value will be the same polarity as the ledout status bit). the setting of this bit will not affect the polarity of the ledout bit for this register. 13 leddis led disable. this bit is used to disable the led output. when leddis has the value one, then the led output will always be floated. when leddis has the value zero, then the led output value will be governed by the ledout and ledpol values. 12-8 res reserved locations. written as zeros, read as undefined. 7 pse pulse stretcher enable. extends the led illumination time for each new occurrence of the enabled function for this led output. a value of 0 disables the function. a value of 1 enables the function. 6 lnkste link status enable. indicates the current link status on the twisted pair interface. when this bit is set, a value of one will be passed to the ledout signal to indicate that the link status state is pass. a value of zero will be passed to the ledout signal to indicate that the link status state is fail. a value of 0 disables the signal. a value of 1 enables the signal. 5 rcvme receive match status enable. indicates receive activity on the network that has passed the ad- dress match function for this node. all address matching modes are included: physical, logical filtering, promiscuous, broadcast, and eadi. a value of 0 disables the signal. a value of 1 enables the signal. 4 xmte transmit status enable. indicates pcnet-32 controller transmit activity. a value of 0 disables the signal. a value of 1 enables the signal. 3 rxpole receive polarity status enable. indicates the current receive polarity condition on the twisted pair interface. a value of one indicates that the polarity of the rxd pair has been reversed. a value of zero indicates that the polarity of the rxd pair has not been reversed. receive polarity indication is valid only if the lnkst bit of bcr4 indicates link pass status. a value of 0 disables the signal. a value of 1 enables the signal. 2 rcve receive status enable. indicates receive activity on the network. a value of 0 disables the signal. a value of 1 enables the signal. 1 jabe jabber status enable. indicates that the pcnet-32 controller is jabbering on the network. a value of 0 disables the signal. a value of 1 enables the signal. 0 cole collision status enable. indicates collision activity on the network. when the aui port is selected, collision activity during the 4.0 ms internal following a transmit completion (sqe internal) will not activate the ledout bit. a value of 0 disables the signal. a value of 1 enables the signal. bcr5: led1 status bit name description bcr5 controls the function(s) that the led1 pin displays. multiple functions can be simultaneously enabled on this led pin. the led display will indicate the logical or of
156 AM79C965A the enabled functions. bcr5 defaults to receive status (rcv) with pulse stretcher enabled (pse = 1) and is fully programmable. the default setting after h_reset for the led1 register is 0084h. the led1 register value is unaffected by s_reset or stop. 31-16 res reserved locations. written as zeros and read as undefined. 15 ledout this bit indicates the current (non- stretched) value of the led output pin. a value of one in this bit indicates that the or of the enabled signals is true. the logical value of the ledout status signal is determined by the settings of the individual status enable bits of the led register (bits 6-0). this bit is read only by the host, and is unaffected by h_reset s_reset or stop. this bit is valid only if the network link status is pass. 14 ledpol led polarity. when this bit has the value zero, then the led pin will be driven to a low level whenever the or of the enabled signals is true and the led pin will be floated and allowed to float high whenever the or of the enabled signals is false (i.e. the led output will be an open drain output and the output value will be the inverse of the ledout status bit). when this bit has the value one, then the led pin will be driven to a high level whenever the or of the enabled signals is true and the led pin will be driven to a low level whenever the or of the enabled signals is false (i.e. the led output will be a totem pole output and the output value will be the same polarity as the ledout status bit). the setting of this bit will not affect the polarity of the ledout bit for this register. 13 leddis led disable. this bit is used to disable the led output. when leddis has the value one, then the led output will always be floated. when leddis has the value zero, then the led output value will be governed by the ledout and ledpol values. 12-8 res reserved locations. write as zeros, read as undefined. 7 pse pulse stretcher enable. extends the led illumination time for each new occurrence of the enabled function for this led output. a value of 0 disables the function. a value of 1 enables the function. 6 lnkste link status enable. indicates the current link status on the twisted pair interface. when this bit is set, a value of one will be passed to the ledout signal to indicate that the link status state is pass. a value of zero will be passed to the ledout signal to indicate that the link status state is fail. a value of 0 disables the signal. a value of 1 enables the signal. 5 rcvme receive match status enable. indicates receive activity on the network that has passed the ad- dress match function for this node. all address matching modes are included: physical, logical filtering, promiscuous, broadcast, and eadi. a value of 0 disables the signal. a value of 1 enables the signal. 4 xmte transmit status enable. indicates pcnet-32 controller transmit activity. a value of 0 disables the signal. a value of 1 enables the signal. 3 rxpole receive polarity status enable. indicates the current receive polarity condition on the twisted pair interface. a value of one indicates that the polarity of the rxd pair has been reversed. a value of zero indicates that the polarity of the rxd pair has not been reversed. receive polarity indication is valid only if the lnkst bit of bcr4 indicates link pass status. a value of 0 disables the signal. a value of 1 enables the signal.
AM79C965A 157 2 rcve receive status enable. indicates receive activity on the network. a value of 0 disables the signal. a value of 1 enables the signal. 1 jabe jabber status enable. indicates that the pcnet-32 controller is jabbering on the network. a value of 0 disables the signal. a value of 1 enables the signal. 0 cole collision status enable. indicates collision activity on the network. when the aui port is selected, collision activity during the 4.0 ms internal following a transmit completion (sqe internal) will not activate the ledout bit. a value of 0 disables the signal. a value of 1 enables the signal. bcr6: led2 status bit name description bcr6 controls the function(s) that the led2 pin displays. multiple functions can be simultaneously enabled on this led pin. the led display will indicate the logical or of the enabled functions. bcr6 defaults to twisted pair mau receive polarity (rcvpol) with pulse stretcher enabled (pse = 1) and is fully programmable. the default setting after h_reset for the led2 register is 0088h. the led2 register value is unaffected by s_reset or stop. 31-16 res reserved locations. written as zeros and read as undefined. 15 ledout this bit indicates the current (non- stretched) value of the led output pin. a value of one in this bit indicates that the or of the enabled signals is true. the logical value of the ledout status signal is determined by the settings of the individual status enable bits of the led register (bits 11-8 and 5-0). this bit is read only by the host, and is unaffected by h_reset s_reset or stop. this bit is valid only if the network link status is pass. 14 ledpol led polarity. when this bit has the value zero, then the led pin will be driven to a low level whenever the or of the enabled signals is true and the led pin will be floated and allowed to float high whenever the or of the enabled signals is false (i.e. the led output will be an open drain output and the output value will be the inverse of the ledout status bit). when this bit has the value one, then the led pin will be driven to a high level whenever the or of the enabled signals is true and the led pin will be driven to a low level whenever the or of the enabled signals is false (i.e. the led output will be a totem pole output and the output value will be the same polarity as the ledout status bit). the setting of this bit will not affect the polarity of the ledout bit for this register. 13 leddis led disable. this bit is used to disable the led output. when leddis has the value one, then the led output will always be floated. when leddis has the value zero, then the led output value will be governed by the ledout and ledpol values. 12-8 res reserved locations. write as zeros, read as undefined. 7 pse pulse stretcher enable. extends the led illumination time for each new occurrence of the enabled function for this led output. a value of 0 disables the function. a value of 1 enables the function. 6 lnkste link status enable. indicates the current link status on the twisted pair interface. when this bit is set, a value of one will be passed to the ledout signal to indicate that the link status state is pass. a value of zero will be passed to the ledout signal to indicate that the link status state is fail. a value of 0 disables the signal. a value of 1 enables the signal. 5 rcvme receive match status enable. indicates receive activity on the
158 AM79C965A network that has passed the ad- dress match function for this node. all address matching modes are included: physical, logical filtering, promiscuous, broadcast, and eadi. a value of 0 disables the signal. a value of 1 enables the signal. 4 xmte transmit status enable. indicates pcnet-32 controller transmit activity. a value of 0 disables the signal. a value of 1 enables the signal. 3 rxpole receive polarity status enable. indicates the current receive polarity condition on the twisted pair interface. a value of one indicates that the polarity of the rxd pair has been reversed. a value of zero indicates that the polarity of the rxd pair has not been reversed. receive polarity indication is valid only if the lnkst bit of bcr4 indicates link pass status. a value of 0 disables the signal. a value of 1 enables the signal. 2 rcve receive status enable. indicates receive activity on the network. a value of 0 disables the signal. a value of 1 enables the signal. 1 jabe jabber status enable. indicates that the pcnet-32 controller is jabbering on the network. a value of 0 disables the signal. a value of 1 enables the signal. 0 cole collision status enable. indicates collision activity on the network. when the aui port is selected, collision activity during the 4.0 ms internal following a transmit completion (sqe internal) will not activate the ledout bit. a value of 0 disables the signal. a value of 1 enables the signal. bcr7: led3 status bit name description bcr7 controls the function(s) that the ledpre3 pin displays. multiple functions can be simultaneously enabled on this led pin. the led display will indicate the logical or of the enabled functions. bcr7 defaults to transmit status (xmt) with pulse stretcher enabled (pse = 1) and is fully programmable. the default setting after h_reset for the led3 register is 0090h. the led3 register value is unaffected by s_reset or stop. 31-16 res reserved locations. written as zeros and read as undefined. 15 ledout this bit indicates the current (non- stretched) value of the led output pin. a value of one in this bit indicates that the or of the enabled signals is true. the logical value of the ledout status signal is determined by the settings of the individual status enable bits of the led register (bits 11-8 and 5-0). this bit is read only by the host, and is unaffected by h_reset s_reset or stop. this bit is valid only if the network link status is pass. 14 ledpol led polarity. when this bit has the value zero, then the led pin will be driven to a low level whenever the or of the enabled signals is true and the led pin will be floated and allowed to float high whenever the or of the enabled signals is false (i.e. the led output will be an open drain output and the output value will be the inverse of the ledout status bit). when this bit has the value one, then the led pin will be driven to a high level whenever the or of the enabled signals is true and the led pin will be driven to a low level whenever the or of the enabled signals is false (i.e. the led output will be a totem pole output and the output value will be the same polarity as the ledout status bit). the setting of this bit will not affect the polarity of the ledout bit for this register. 13 leddis led disable. this bit is used to disable the led output. when leddis has the value one, then the led output will always be
AM79C965A 159 floated. when leddis has the value zero, then the led output value will be governed by the ledout and ledpol values. 12-8 res reserved locations. write as zeros, read as undefined. 7 pse pulse stretcher enable. extends the led illumination time for each new occurrence of the enabled function for this led output. a value of 0 disables the function. a value of 1 enables the function. 6 lnkste link status enable. indicates the current link status on the twisted pair interface. when this bit is set, a value of one will be passed to the ledout signal to indicate that the link status state is pass. a value of zero will be passed to the ledout signal to indicate that the link status state is fail. a value of 0 disables the signal. a value of 1 enables the signal. 5 rcvme receive match status enable. indicates receive activity on the network that has passed the ad- dress match function for this node. all address matching modes are included: physical, logical filtering, promiscuous, broadcast, and eadi. a value of 0 disables the signal. a value of 1 enables the signal. 4 xmte transmit status enable. indicates pcnet-32 controller transmit activity. a value of 0 disables the signal. a value of 1 enables the signal. 3 rxpole receive polarity status enable. indicates the current receive polarity condition on the twisted pair interface. a value of one indicates that the polarity of the rxd pair has been reversed. a value of zero indicates that the polarity of the rxd pair has not been reversed. receive polarity indication is valid only if the lnkst bit of bcr4 indicates link pass status. a value of 0 disables the signal. a value of 1 enables the signal. 2 rcve receive status enable. indicates receive activity on the network. a value of 0 disables the signal. a value of 1 enables the signal. 1 jabe jabber status enable. indicates that the pcnet-32 controller is jabbering on the network. a value of 0 disables the signal. a value of 1 enables the signal. 0 cole collision status enable. indicates collision activity on the network. when the aui port is selected, collision activity during the 4.0 ms internal following a transmit completion (sqe internal) will not activate the ledout bit. a value of 0 disables the signal. a value of 1 enables the signal. bcr16: i/o base address lower bit name description note that all bits in this register are programmable through the eeprom pread operation and through the software relocatable mode operation. 31-16 res reserved locations. written as zeros and read as undefined. 15-5 iobasel i/o base address lower 16 bits. these bits are used to determine the location of the pcnet-32 controller in all of i/o space. they function as bits 15 through 5 of the i/ o address of the pcnet-32 controller. note that the lowest five bits of the pcnet-32 controller i/o space are not programmable. these bits are assumed to be zeros. this means that it is not possible to locate the pcnet-32 controller on a space that does not begin on a 32- byte block boundary. the value of iobasel is determined in either of two ways: 1.the isobasel value may be set during the eeprom read. 2.if no eeprom exists, or if there is an error detected in the eeprom data, then the pcnet-32 controller will enter software relo- catable mode, and a specific sequence of write accesses to i/o address 378h will cause the
160 AM79C965A iobasel value to be updated. refer to the software relocatable mode section of this document for more details. a direct write access to the i/o base address lower register may be performed. iobasel is not affected by s_reset or stop. 4-0 res reserved locations. written as zeros, read as undefined. bcr17: i/o base address upper bit name description note that all bits in this register are programmable through the eeprom pread operation and software relocatable mode. 31-16 res reserved locations. written as zeros and read as undefined. 15-0 iobaseu i/o base address upper 16 bits. these bits are used to determine the location of the pcnet-32 controller in all of i/o space. they function as bits 31 through 16 of the i/o address of the pcnet-32 controller. the value of iobaseu is determined in either of two ways: 1. the iobaseu value may be set during the eeprom read. 2. if no eeprom exists, or if there is an error detected in the eeprom data, then the pcnet-32 controller will enter software relocatable mode, and a specific sequence of write accesses to i/o address 378h will cause the iobaseu value to be updated. refer to the software relocatable mode section of this document for more details. a direct write access to the i/o base address upper register may be performed. iobaseu is not affected by s_reset or stop. bcr18: burst size and bus control bit name description note that all bits in this register are programmable through the eeprom pread operation. 31-16 res reserved locations. written as zeros and read as undefined. 15-11 cll cache line length. these bits are used to determine how often a cache invalidation cycle needs to be performed when generate cache invalidation cycles has been activated by setting the gcic bit (bit 10 of bcr18) to a one. cll values are interpreted as multiples of 4 bytes. for example, a cll value of 00001b means the cache line length is 4 bytes and a cache invalidation cycle (assertion of eads ) will be performed every 4 bytes. a cll value of 00010b means the cache line length is 8 bytes, and a cache invalidation cycle will be performed every 8 bytes. a cll value of 00100 means the cache line length is 16 bytes. a value of 00000 means that the cache line size is ? infinite ? . in other words, a single eads assertion will be performed on the first access at the beginning of each bus mastership period (write accesses only) and no subsequent eads assertions will be made during this bus mastership period. cache invalidation cycles are performed only during pcnet-32 controller bus master write ac- cesses. some cll values are reserved (see chart below). the portion of the address bus that will be floated at the time of an address hold operation (ahold asserted) will be determined by the value of the cache line length register. the following chart lists all of the legal values of cll showing the portion of the address bus that will become floated during an address hold operation:
AM79C965A 161 note that the default value of cll after reset is 00100b. all timing diagrams in this document are drawn with the assumption that this is the value of cll. when vesa vl-bus mode is selected, then the leads pin functions as if cll = 00001b regardless of the actual cll setting. cll is set to 00100b by h_reset and is not affected by s_reset or stop. 10 gcic/iwbackgenerate cache invalidation cycles. ignore wback signal. gcic generate cache invalidation cycles. when this bit is set and the am486 mode has been selected, then the pcnet-32 controller assumes that the host system contains a cache, but the host system does not snoop the local bus master accesses of the pcnet-32 controller, and therefore, that cache invalidation cycles must be generated by the pcnet-32 controller for pcnet-32 controller master accesses. pcnet-32 controller will not perform snoops to invalidate cache lines for local bus accesses that other local bus masters may have executed. when gcic is a zero, the pcnet-32 controller assumes that logic in the host system will create the cache invalidation cycles that may be necessary as a result of pcnet-32 controller local bus master accesses. the cache invalidation logic performs its functions according to the gcic and cll bits, regardless of the setting of the am486 /am386 pin. iwback ignore wback signal. when this bit is set and the vesa vl-bus mode has been selected, then the pcnet-32 device will operate as though the wback input pin is always held high, even though the real value of the wback input may change. this function is provided to allow the pcnet-32 device to operate in systems which violate vesa vl-bus wback operation by either floating this pin or by always driving this pin low. leads is always asserted with each assertion of ads when vesa vl- bus mode has been selected, regardless of the setting of the gcic/iwback bit. gcic/iwback is cleared by h_reset and is not affected by s_reset or stop. 9 prpcnet priority pcnet. this bit is used to set the priority of the daisy chain arbitration logic that resides within the pcnet-32 controller. when prpcnet = 1, the priority of the daisy chain logic is set to pcnet-32 controller highest priority, external device lowest priority. when prpcnet = 0, the priority of the daisy chain logic is set to external device highest priority, pcnet-32 controller lowest priority. in the case prpcnet = 0, where the pcnet-32 controller has lower priority than the external device and the pcnet-32 controller is preempted due to a holdi request from the external device, the pcnet-32 controller will complete the current sequence of accesses and then pass the hlda to the external device by asserting the hldao signal. the hold output signal from the pcnet-32 controller will not change state during the hldao hand-off. if the pcnet-32 controller is performing a linear burst, then the pcnet-32 controller will complete the linear burst and then pass the hlda to the external device through the hldao signal. for more details on exact timing of preemption events, see the cll value portion of address bus floated during ahold 00000 none 00001 a31-a2 00010 a31-a3 00011 reserved cll value 00100 a31-a4 00101 ? 00111 reserved cll values 01000 a31-a5 01001 ? 01111 reserved cll values 10000 a31-a6 10001 ? 11111 reserved cll values
162 AM79C965A individual descriptions of the various dma transfers. prpcnet is cleared by h_reset and is not affected by s_reset or stop. the default setting for this bit will be prpcnet = 0. this default value reflects the nature of the cpu ? s handling of a hold request (i.e. the cpu has lowest priority). by making this the default setting, the pcnet-32 controller response to holdi is as close as possible to the timing of the cpu response to hold, so that minimal design difficulty will be created by inserting the pcnet-32 controller into the system as the mediating device between the cpu and the extension bus chipset. 8 res reserved bit. must be written as a one. will be read as a one. this reserved location is set by h_reset and is not affected by s_reset or stop. 7 dwio double word i/o. when set, this bit indicates that the pcnet-32 controller is programmed for dwio mode. when cleared, this bit indicates that the pcnet-32 controller is programmed for word i/o mode. this bit affects the i/o resource offset map and it affects the defined width of the pcnet-32 controller ? s i/o resources. see the dwio and wio sections for more details. the pcnet-32 controller will set dwio if it detects a double-word write access to offset 10h from the pcnet-32 controller i/o base address (corresponding to the rdp resource). a double word write access to offset 10h is the only way that the dwio bit can be set. dwio cannot be set by a direct write to bcr18. once the dwio bit has been set to a one, only a h_reset can reset it to a zero. dwio is read only by the host. dwio is cleared by h_reset and is not affected by s_reset or stop. 6 breade burst read enable. when set, this bit enables linear bursting during memory read accesses, where linear bursting is defined to mean that only the first transfer in the current bus arbitration will contain an address cycle. subsequent transfers will consist of data only. however, the entire address bus will still be driven with appropriate values during the subsequent cycles, but ads will not be asserted. when cleared, this bit prevents the part from performing linear bursting during read accesses. in no case will the part linearly burst a descriptor access or an initialization access. breade is cleared by h_reset and is not affected by s_reset or stop. burst read activity is not allowed when the bclk frequency is >33 mhz. linear bursting is disabled in vl-bus systems that operate above this frequency by connecting the vlben pin to either id(3) (for vl- bus version 1.0 systems) or id(4) and id(3) and id(1) and id(0) (for vl-bus version 1.1 or 2.0 systems). in am486-style systems that have bclk frequencies above 33 mhz, disabling the linear burst capability is ideally carried out through eeprom bit programming, since the eeprom programming can be setup for a particular machine ? s architecture. when the vlben pin has been reset to a zero, then the breade bit will be forced to a value of zero. any attempt to change this value by writing to the breade bit location will have no effect. 5 bwrite burst write enable. when set, this bit enables linear bursting during memory write accesses, where linear bursting is defined to mean that only the first transfer in the current bus arbitration will contain an address cycle. subsequent transfers will consist of data only. however, the entire address bus will still be driven with appropriate values during the subsequent cycles, but ads will not be asserted. when cleared, this bit prevents the
AM79C965A 163 part from performing linear bursting during write accesses. in no case will the part linearly burst a descriptor access or an initialization access. bwrite is cleared by h_reset and is not affected by s_reset or stop. burst write activity is not allowed when the bclk frequency is >33 mhz. linear bursting is disabled in vl-bus systems that operate above this frequency by connecting the vlben pin to either id(3) (for vl- bus version 1.0 systems) or id(4) and id(3) and id(1) and id(0) (for vl-bus version 1.1 or 2.0 systems). in am486-style systems that have bclk frequencies above 33 mhz, disabling the linear burst capability is ideally carried out through eeprom bit programming, since the eeprom programming can be setup for a particular machine ? s architecture. when the vlben pin has been reset to a zero, then the bwrite bit will be forced to a value of zero. any attempt to change this value by writing to the bwrite bit location will have no effect. 4-3 tstshdw test shadow bits. these bits are used to place the pcnet-32 controller into gpsi mode. bcr18[3] must be set to zero. the operating modes possible are indicated in table 47. see table 48 for pin reconfiguration in gpsi mode. note that when the gpsi mode is invoked, only the lower 24 bits of the address bus are available. ioaw24 (bcr21[8]) must be set to allow slave operations. during master accesses in gpsi mode, the pcnet-32 controller will not drive the upper 8 bits of the address bus with address information. these bits are not writable, re- gardless of the setting of the entst bit in csr4. values may only be programmed to these bits through the eeprom read operation. bcr18[4:3] are set to 0 by h_reset and are unaffected by s_reset or stop. 2-0 linbc[2:0] linear burst count. the 3-bit value in this register sets the upper limit for the number of transfer cycles in a linear burst. this limit determines how often the pcnet-32 controller will assert the ads signal during linear burst transfers. each time that the interpreted value of linbc transfers is reached, the pcnet-32 controller will assert the ads signal with a new valid address. the linbc value should contain only one active bit. linbc values with more than one active bit may produce predictable results, but such values will not be compatible with future amd network controllers. the linbc entry is shifted by two bits before being used by the pcnet- 32 controller. for example, the value linbc[2:0] = 010 is understood by the pcnet-32 con-troller to mean 01000 = 8. therefore, the value linbc[2:0] = 010 will cause the pcnet-32 controller to issue a new ads every 01000b = 8 transfers. the pcnet-32 controller may linearly burst fewer than the value represented by linbc, due to other conditions that cause the burst to end prematurely. therefore, linbc should be regarded as an upper limit to the length of linear burst. tstshdw value (bcr18[4:3]) pvalid (bcr19[15]) gpsien (csr124[4]) operating mode 00 x 0 normal operating mode 10 1 x gpsi mode 01 1 0 reserved 11 1 x reserved xx 0 0 normal operating mode xx 0 1 gpsi mode
164 AM79C965A table 48. gpsi pin configuration note that linear burst operation will only begin on certain addresses. the general rule for linear burst starting addresses is: a[31:0] mod (linbc x 16) = 0. table 49 illustrates all possible starting address values for all legal linbc values (only 1, 2, and 4 are legal; other values are reserved). note that a[31:8] are don ? t care values for all addresses. (a[1:0] do not exist within a 32 bit system, however, they are valid bits within the buffer pointer field of descriptor word 0.) table 49. linear burst cycles due to the beginning address restrictions just given, it can be shown that some portion of the address bus will be held stable throughout each linear burst se- quence, while the lowest portion of the address bus will change value with each new cycle. the portion of the address bus that will be held stable during a linear burst access is given in table 50. table 50. linear burst address bus the assertion of rdyrtn in the place of brdy within a linear burst cycle will cause the linear burst to be interrupted. in that case, the pcnet-32 controller will revert to ordinary two-cycle transfers, except that blast will remain de-asserted to show that linear bursting is being requested by the pcnet-32 controller. this situation is defined as interrupted linear burst cycles. if brdy is sampled as asserted (without also sampling rdyrtn asserted during the same access) during interrupted linear burst cycles, then linear bursting will resume. there are several events which may cause early termination of linear burst. among those events are: no more data available for transfer in either a buffer or in the fifo or if either the cycle register (csr80) or the bus activity timer register (csr82) times out. in any of these cases, the pcnet-32 controller will end the linear burst by asserting blast and then releasing the bus. a partial linear burst may have been sent out before the assertion of blast , where ? partial linear burst ? refers to the case where the number of data words transferred between the last asserted ads and the gpsi function gpsi i/o type lance gpsi pin ilacc gpsi pin pcnet-32/ pcnet-isa gpsi pin pcnet-32 pin number pcnet-32 normal pin function transmit data o tx txd txdat 132 a31 transmit enable o tena rts txen 133 a30 transmit clock i tclk txc stdclk 134 a29 collision i clsn cdt clsn 137 a28 receive carrier sense i rena crs rxcrs 138 a27 receive clock i rclk rxc srdclk 140 a26 receive data i rx rxd rxdat 141 a25 linbc[2:0] lbs = linear burst size (no. of transfers) size of burst (byte) linear burst beginning addresses (a[31:6] = don ? t care) a[5:0] = 1 2 4 4 8 16 16 32 64 00, 10, 20, 30 00, 20 00 linbc value portion of address bus stable during linear burst 001 010 100 a[31:4] a[31:5] a[31:6]
AM79C965A 165 assertion of blast is less than linbc. the value on the address bus will be updated with appropriate values every clock cycle during linear burst operations, even though ads will not be asserted during every clock cycle. certain combinations of watermark programming and linbc programming may create situations where no linear bursting is possible, or where the fifo may be excessively read or excessively written. such combinations are declared as illegal. combinations of watermark set- tings and linbc settings must obey the following relationship: watermark (in bytes) 3 linbc (in bytes) combinations of watermark and linbc settings that violate this rule may cause unexpected behavior. linbc is set to the value of 001 by h_reset and is not affected by s_reset or stop. this gives a default linear burst length of 4 transfers = 001 x 4. bcr19: eeprom control and status bit name description 31-16 res reserved locations. written as zeros and read as undefined. 15 pvalid eeprom valid status bit. this bit is read only by the host. a value of one in this bit indicates that a pread operation has occurred, and that 1) there is an eeprom connected to the pcnet-32 controller microwire interface pins and 2) the contents read from the eeprom have passed the checksum verification operation. a value of zero in this bit indicates that the contents of the eeprom are different from the contents of the applicable pcnet-32 controller on- board registers and/or that the checksum for the entire 36 bytes of eeprom is incorrect or that no eeprom is connected to the microwire interface pins. pvalid is set to zero during h_reset and is unaffected by s_reset or the stop bit. however, following the h_reset operation, an automatic read of the eeprom will be performed. just as is true for the normal pread command, at the end of this automatic read operation, the pvalid bit may be set to one. therefore, h_reset will set the pvalid bit to zero at first, but the automatic eeprom read operation may later set pvalid to a one. if pvalid becomes zero following an eeprom read operation (either automatically generated after h_reset, or requested through pread), then all eeprom- programmable bcr locations will be reset to their h_reset values. if no eeprom is present at the eesk, eedi and eedo pins, then all attempted pread commands will terminate early and pvalid will not be set. this applies to the automatic read of the eeprom after h_reset as well as to host- initiated pread commands. 14 pread eeprom read command bit. when this bit is set to a one by the host, the pvalid bit (bcr19[15]) will immediately be reset to a zero and then the pcnet-32 controller will perform a read operation of 36 bytes from the eeprom through the microwire interface. the eeprom data that is fetched during the read will be stored in the appropriate internal registers on board the pcnet-32 controller. upon completion of the eeprom read operation, the pcnet-32 controller will assert the pvalid bit. eeprom contents will be indirectly accessible to the host through i/o read accesses to the address prom (offsets 0h through fh) and through i/o read accesses to other eeprom programmable registers. note that i/o read accesses from these locations will not actually access the eeprom itself, but instead will access the pcnet-32 controller ? s internal copy of the eeprom contents. i/o write
166 AM79C965A accesses to these locations may change the pcnet-32 controller register contents, but the eeprom locations will not be affected. eeprom locations may be accessed directly through bcr19. at the end of the read operation, the pread bit will automatically be reset to a zero by the pcnet-32 controller and pvalid will bet set, provided that an eeprom existed on the microwire interface pins and that the checksum for the entire 36 bytes of eeprom was correct. note that when pread is set to a one, then the pcnet-32 controller will no longer respond to i/o accesses directed toward it, until the pread operation has completed successfully. if a pread command is given to the pcnet-32 controller but no eeprom is attached to the microwire interface pins, then the pread command will terminate early, the pread bit will be cleared to a zero and the pvalid bit will remain reset with a value of zero. the pcnet-32 controller will then enter software relocatable mode to await further programming. this ap- plies to the automatic read of the eeprom after h_reset as well as to host initiated pread commands. eeprom programmable locations on board the pcnet-32 controller will be set to their default values by such an aborted pread operation. for example, if the aborted pread operation immediately followed the h_reset operation, then the final state of the eeprom programmable locations will be equal to the h_reset programming for those locations. if a pread command is given to the pcnet-32 controller and the autodetection pin (eesk/led1/ sfbd) indicates that no eeprom is present, then the eeprom read operation will still be attempted. note that at the end of the h_reset operation, a read of the eeprom will be performed automatically. this h_reset- generated eeprom read function will not proceed if the auto-detection pin (eesk/led1/sfbd) indicates that no eeprom is present. instead, software relocatable mode will be entered immediately. pread is set to zero during h_reset and is unaffected by s_reset or stop. pread is only writable when the stop bit is set to one. 13 eedet eeprom detect. this bit indicates the sampled value of the eesk/ led1/sfbd pin at the end of h_reset. the value of this bit is independent whether or not an eeprom is actually present at the eeprom interface. it is only a function of the sampled value of the eesk/ledi/sfbd pin at the end of h_reset. the value of this bit is determined at the end of the h_reset operation. it is unaffected by s_reset or stop. this bit is not writable. it is read only. table 51 indicates the possible combinations of eedet and the existence of an eeprom and the resulting operations that are possible on the eeprom microwire interface. 12-5 res reserved locations. written as zero, read as undefined. 4 een eeprom port enable. when this bit is set to a one, it causes the values of ebusy, ecs, esk and edi to be driven onto the shfbusy, eecs, eesk and eedi pins, respectively. when this bit is reset to a zero, then the shfbusy pin will be driven with the inverse of the pvalid (bit 15 of bcr19) value. pvalid is set to ? one ? if the eeprom read was successful. it is set to ? zero ? otherwise.
AM79C965A 167 table 51. eedet effects on eeprom operation if een = 0 and no eeprom read function is currently active, then eecs will be driven low. when een = 0 and no eeprom read function is currently active, eesk and eedi pins will be driven by the led registers bcr5 and bcr4, respectively. see table 52. een is set to zero by h_reset and is unaffected by s_reset or stop. 3 ebusy eeprom busy. this bit controls the value of the shfbusy pin of the pcnet-32 controller when the een bit is set to one and the pread bit is set to zero. this bit is used to indicate to external eeprom- programmable logic that an eeprom access is occurring. when user programming of the eeprom is desired through the bcr19 eeprom port, then ebusy should be set to one before een is set to one in systems where eeprom-programmable external logic exists. at the end of the eeprom programming operation, ebusy should either remain set at one until after een is set to zero, or the user may reset ebusy to zero with een = 1 immediately following a read of eeprom byte locations 35 and 36, which should be the last accesses performed during bcr19 accesses to the eeprom. a programmed pread operation following the bcr19 eeprom programming accesses will cause the shfbusy pin to become low if the eeprom checksum is verified. ebusy has no effect on the output value of the shfbusy pin unless the pread bit is set to zero and the een bit is set to one. ebusy is set to zero by h_reset and is unaffected by s_reset or stop. 2 ecs eeprom chip select. this bit is used to control the value of the eecs pin of the microwire interface when the een bit is set to one and the pread bit is set to zero. if een = ? 1 ? and pread = ? 0 ? and ecs is set to a one, then the eecs pin will be forced to a high level at the rising edge of the next bclk following bit programming. if een = ? 1 ? and pread = ? 0 ? and ecs is set to a zero, then the eecs pin will be forced to a low level at the rising edge of the next bclk following bit programming. ecs has no effect on the output value of the eecs pin unless the pread bit is set to zero and the een bit is set to one. eedet value (bcr19[3]) eeprom connected? result if pread is set to one result of automatic eeprom read operation following h_reset 0 no eeprom read operation is attempted. entire read sequence will occur, checksum failure will result, pvalid is reset to zero. first two eesk clock cycles are generated, then eeprom read operation is aborted and pvalid is reset to zero. 0 yes eeprom read operation is attempted. entire read sequence will occur, checksum operation will pass, pvalid is set to one. first two eesk clock cycles are generated, then eeprom read operation is aborted and pvalid is reset to zero. 1 no eeprom read operation is attempted. entire read sequence will occur, checksum failure will result, pvalid is reset to zero. eeprom read operation is attempted. entire read sequence will occur, checksum failure will result, pvalid is reset to zero. 1 yes eeprom read operation is attempted. entire read sequence will occur, checksum operation will pass, pvalid is set to one. eeprom read operation is attempted. entire read sequence will occur, checksum operation will pass, pvalid is set to one.
168 AM79C965A ecs is set to zero by h_reset and is unaffected by s_reset or stop. 1 esk eeprom serial clock. this bit and the edi/edo bit are used to control host access to the eeprom. values programmed to this bit are placed onto the eesk pin at the rising edge of the next bclk following bit programming, except when the pread bit is set to one or the een bit is set to zero. if both the esk bit and the edi/edo bit values are changed during one bcr19 write operation, while een = 1, then setup and hold times of the eedi pin value with respect to the eesk signal edge are not guaranteed. table 52. eeprom enable esk has no effect on the eesk pin unless the pread bit is set to zero and the een bit is set to one. esk is reset to one by h_reset and is unaffected by s_reset or stop. 0 edi/edo eeprom data in/eeprom data out. data that is written to this bit will appear on the eedi output of the microwire interface, except when the pread bit is set to one or the een bit is set to zero. data that is read from this bit reflects the value of the eedo input of the microwire interface. edi/edo has no effect on the eedi pin unless the pread bit is set to zero and the een bit is set to one. edi/edo is reset to zero by h_reset and is unaffected by s_reset or stop. bcr20: software style bit name description this register is an alias of the lo- cation csr58. accesses to/from this register are equivalent to accesses to csr58. 31-10 res reserved locations. written as zeros and read as undefined. 9 csrpcnet csr pcnet-isa configuration bit. when set, this bit indicates that the pcnet-32 controller register bits of csr4 and csr3 will map directly to the csr4 and csr3 bits of the pcnet-isa (am79c960) device. when cleared, this bit indicates that pcnet-32 controller register bits of csr4 and csr3 will map directly to the csr4 and csr3 bits of the ilacc (am79c900) device. the value of csrpcnet is determined by the pcnet-32 con- troller. csrpcnet is read only by the host. the pcnet-32 controller uses the setting of the software style register (bcr20[7:0]) to determine the value for this bit. csrpcnet is set by h_reset and is not affected by s_reset or stop. 8 ssize32 software size 32 bits. when set, this bit indicates that the pcnet-32 controller utilizes amd79c900 (ilacc) software structures. in particular, initialization block and transmit and receive descriptor bit maps are affected. when cleared, this bit indicates that the pcnet-32 controller utilizes amd pcnet-isa software structures. note: regardless of the setting of ssize32, the initialization block reset pin pread or auto read in progress een eecs shfbusy eesk eedi high x x 0 1 z z low 1 x active 1 active active low 0 1 from ecs bit of bcr19 from ebusy bit of bcr19 from esk bit of bcr19 from eedi bit of bcr19 low 0 0 0 pvalid led1 lnkst
AM79C965A 169 must always begin on a double-word boundary. the value of ssize32 is deter- mined by the pcnet-32 controller. ssize32 is read only by the host. the pcnet-32 controller uses the setting of the software style register(bcr20[7:0]/csr58[7:0]) to determine the value for this bit. ssize32 is cleared by h_reset and is not affected by s_reset or stop. if ssize32 is reset, then bits iadr[31:24] of csr2 will be used to generate values for the upper 8 bits of the 32 bit address bus during master accesses initiated by the pcnet-32 controller. this action is required, since the 16-bit software structures specified by the ssize32=0 setting will yield only 24 bits of address for pcnet-32 controller bus master accesses. if ssize32 is set, then the software structures that are common to the pcnet-32 controller and the host system will supply a full 32 bits for each address pointer that is needed by the pcnet-32 controller for performing master accesses. the value of the ssize32 bit has no effect on the drive of the upper 8 address pins. the upper 8 address pins are always driven, regardless of the state of the ssize32 bit. note: the setting of the ssize32 bit has no effect on the defined width for i/o re- sources.i/o resource width is deter- mined by the state of the dwio bit. 7-0 swstyle software style register. the value in this register determines the ? style ? of i/o and memory resources that shall be used by the pcnet-32 controller. the software style selection will af- fect the interpretation of a few bits within the csr space and the width of the descriptors and initialization block. see table 53. all pcnet-32 controller csr bits and bcr bits and all descriptor, buffer and initialization block entries not cited in the table above are unaffected by the software style selection and are therefore always fully functional as specified in the csr and bcr and descriptor sections. read/write accessible only when the stop bit is set. the swstlye register will contain the value 00h following h_reset and is not affected by s_reset or stop. bcr21: interrupt control bit name description note that all bits in this register are programmable through the eeprom pread operation and software relocatable mode. 31-9 res reserved locations. written as zeros and read as undefined. 8 ioaw24 i/o address width 24 bits. when set to a one, the ioaw24 bit will cause the pcnet-32 controller to ignore the upper 8 bits of the address bus when determining whether an i/o address matches pcnet-32 controller i/o space. when ioaw24 is set to a zero, then the pcnet-32 controller will examine all 32 bits of the address bus when determining whether an i/o address matches pcnet-32 controller i/o space. read/write accessible only when the stop bit is set. the ioaw24 bit will be reset to zero by h_reset and is not affected by s_reset or stop. 7 rejectdis reject disable. when set to a one, the rejectdis bit will cause the ear function of the eadi interface to be disabled. specifically, the intr2 pin will retain its function as intr2 and will not function as ear , regardless of the setting of the bcr2 eadisel bit. when reset to a zero, the rejectdis bit will allow the intr2 pin to be redefined to function as ear of the eadi interface when the eadisel bit of bcr2 has been set to a one. read/write accessible only when stop bit is set. the rejectdis bit will be reset to zero by h_reset and is not affected by s_reset or stop.
170 AM79C965A 6-2 res reserved locations. written as zeros and read as undefined. 1-0 intsel interrupt select. the value of these bits determines which of the interrupt pins will be the active interrupt. table 55 indicates which interrupt will be selected for each combination of intsel and jtagsel values. interrupt pins that are not selected will be floated. the intsel register will contain the value 00 following h_reset and is not affected by s_reset or stop. table 53. software style selection table 54. interrupt select initialization block when ssize32=0 (bcr20/csr58, bit 8) the software structures are defined to be 16 bits wide and the initialization block looks as shown in table 55. when ssize32=1, the software structures are defined to be 32 bits wide and the initialization block looks as shown in table 56. regardless of the value of ssize32, the initialization block must be aligned to a double word boundary, i.e. csr1[1:0] and csr16[1:0] must be set to zero. note that the pcnet-32 device performs double-word accesses to read the initialization block. this statement is always true, regardless of the setting of the ssize32 bit. swstyle[7:0] (hex) style name csrpcnet ssize32 altered bit interpretations 00 lance/ pcnet-isa 1 0 all csr4 bits will function as defined in the csr4 section. tmd1[29] functions as add_fcs 01 ilacc 0 1 csr4[9:8], csr4[5:4] and csr4[1:0] will have no function , but will be writeable and readable. csr4[15:10], csr4[7:6] and csr4[3:2] will function as defined in the csr4 section. tmd1[29] becomes no_fcs. 02 pcnet-32 1 1 all csr4 bits will function as defined in the csr4 section. tmd1[29] functions as add_fcs all other combinations reserved undefined intsel[1:0] jtagsel selected interrupt pin 00 0 intr1 01 0 intr2 10 0 intr3 11 0 intr4 00 1 intr1 01 1 intr2 10 1 intr1 11 1 intr2
AM79C965A 171 table 55. initialization block (when ssize = 0) table 56. initialization block (when ssize = 1) rlen and tlen when ssize32 = 0 (bcr20[8]), then the software structures are defined to be 16 bits wide, and the rlen and tlen fields in the initialization block are 3 bits wide, occupying bits 15,14, and 13 and the value in these fields determines the number of transmit and receive descriptor ring entries (dre) which are used in the descriptor rings. their meaning is shown in table 57. table 57. descriptor ring entries (ssize32 = 0) if a value other than those listed in the above table is desired, csr76 and csr78 can be written after initiali- zation is complete. see the description of the appropri- ate csrs. when ssize32=1 (bcr20[8]), then the software struc- tures are defined to be 32 bits wide, and the rlen and tlen fields in the initialization block are 4 bits wide, oc- cupying bits 15,14, 13, and 12, and the value in these fields determines the number of transmit and receive descriptor ring entries (dre) which are used in the descriptor rings. their meaning is shown in table 58. if a value other than those listed in the above table is desired, csr76 and csr78 can be written after initiali- zation is complete. see the description of the appropri- ate csrs. address bits 15-13 bit 12 bits 11-8 bits 7-4 bits 3-0 iadr+00 mode 15-00 iadr+02 padr 15-00 iadr+04 padr 31-16 iadr+06 padr 47-32 iadr+08 ladrf 15-00 iadr+0a ladrf 31-16 iadr+0c ladrf 47-32 iadr+0e ladrf 63-48 iadr+10 rdra 15-00 iadr+12 rlen 0 res rdra 23-16 iadr+14 tdra 15-00 iadr+16 tlen 0 res tdra 23-16 address bits 31-28 bits 27-24 bits 23-20 bits 19-16 bits 15-12 bits 11-8 bits 7-4 bits 3-0 iadr+00 iadr+04 iadr+08 iadr+0c iadr+10 iadr+14 iadr+18 tlen res rlen res mode padr 31 ? 00 res padr 47-32 ladr 31 ? 00 ladr 63 ? 32 rdra 31 ? 00 tdra 31-00 r/tlen no. of dres 000 1 001 2 010 4 011 8 100 16 101 32 110 64 111 128
172 AM79C965A table 58. descriptor ring entries (ssize = 1) rdra and tdra tdra and rdra indicate where the transmit and re- ceive descriptor rings, respectively, begin. each dre must be located at 0 mod 16 address values when ssize32 = 1 (bcr20[8]). each dre must be located at 0 mod 8 address values when ssize32 = 0 (bcr20[8]). ladrf the logical address filter (ladrf) is a 64-bit mask that is used to accept incoming logical addresses. if the first bit in the incoming address (as transmitted on the wire) is a ? 1 ? , the address is deemed logical. if the first bit is a ? 0 ? , it is a physical address and is compared against the physical address that was loaded through the initialization block. a logical address is passed through the crc generator, producing a 32 bit result. the high order 6 bits of the crc is used to select one of the 64 bit positions in the logical address filter. if the selected filter bit is set, the address is accepted and the frame is placed into memory. see figure 38. figure 38. address match logic the logical address filter is used in multicast address- ing schemes. the acceptance of the incoming frame based on the filter value indicates that the message may be intended for the node. it is the node ? s responsibility to determine if the message is actually intended for the node by comparing the destination address of the stored message with a list of acceptable logical addresses. if the logical address filter is loaded with all zeroes and promiscuous mode is disabled, all incoming logical addresses except broadcast will be rejected. the broadcast address, which is all ones, does not go through the logical address filter and is handled as follows: if the disable broadcast bit is cleared, the broad- cast address is accepted if the disable broadcast bit is set and promiscuous mode is enabled, the broadcast address is ac- cepted. if the disable broadcast bit is set and promiscuous mode is disabled, the broadcast address is re- jected. r/tlen no. of dres 0000 1 0001 2 0010 4 0011 8 0100 16 0101 32 0110 64 0111 128 1000 256 1001 512 11xx 512 1x1x 512 47 1 0 received message destination address 1 crc gen sel 31 26 0 mux match match packet accepted packet rejected 63 0 6 64 logical address filter (ladrf) 32-bit resultant crc match match=1: packet accepted match=0: packet rejected 18219-45
AM79C965A 173 if external loopback is used, the fcs logic must be allo- cated to the receiver (by setting the dxmtfcs bit in csr15, and clearing the add_fcs bit in tmd1) when using multicast addressing. padr this 48-bit value represents the unique node address assigned by the iso 8802-3 (ieee/ansi 802.3) and used for internal address comparison. padr[0] is the first address bit transmitted on the wire, and must be zero. the six hex-digit nomenclature used by the iso 8802-3 (ieee/ansi 802.3) maps to the pcnet-32 con- troller padr register as follows: the first byte comprises padr[7:0], with padr[0] being the least significant bit of the byte. the second iso 8802-3 (ieee/ansi 802.3) byte maps to padr[15:8], again from ls bit to ms bit, and so on. the sixth byte maps to padr[47:40], the ls bit being padr[40]. mode the mode register in the initialization block is copied into csr15 and interpreted according to the description of csr15. receive descriptors when ssize32 = 0 (bcr20[8]), then the software structures are defined to be 16 bits wide, and receive descriptors look as shown in table 59. table 59. receive descriptors (ssize32 = 0) pcnet-32 reference names within the table above refer to the descriptor definitions given in text below. since the text descriptions are for 32-bit descriptors, the table above shows the mapping of the 32-bit descriptors into the 16-bit descriptor space. since 16-bit descriptors are a subset of the 32-bit descriptors, some portions of the 32-bit descriptors may not appear in table 59. when ssize32 = 1 (bcr 20[8]), then the software structures are defined to be 32 bits wide, and receive descriptors look as shown in table 60. table 60. receive descriptors (ssize 32 = 1) * na = these 8 bits do not exist in any lance descriptor. the receive descriptor ring entries (rdres) are composed of four receive message descriptors (rmd0 ? rmd3). together they contain the following information: the address of the actual message data buffer in user (host) memory. the length of that message buffer. status information indicating the condition of the buffer. the eight most significant bits of rmd1 (rmd1[31:24]) are collectively termed the status of the receive descriptor. rmd0 bit name description 31-0 rbadr receive buffer address. this field contains the address of the receive buffer that is associated with this descriptor. rmd1 bit name description 31 own this bit indicates that the de- scriptor entry is owned by the host (own=0) or by the pcnet-32 controller (own=1). the pcnet-32 lance/ pcnet-isa descriptor designation pcnet-32 descriptor designation address bits 15-0 bits 15-8 bits 7-0 crda+00 rmd0 rmd0[15:0] crda+02 rmd1 rmd1[31:24] rmd0[23:16] crda+04 rmd2 rmd1[15:0] crda+06 rmd3 rmd2[15:0] lance/pcnet-isa descriptor designation pcnet-32 descriptor designation address bits 31-24 bits 23-16 bits 15-8 bits 7-0 bits 31-0 crda+00 *na rmd1[7:0] rmd0[15:8] rmd0[7:0] rmd0 crda+04 rmd1[15:8] *na rmd2[15:8] rmd2[7:0] rmd1 crda+08 *na *na rmd3[15:8] rmd3[7:0] rmd2 crda+0c *na *na *na *na rmd3
174 AM79C965A controller clears the own bit after filling the buffer pointed to by the descriptor entry. the host sets the own bit after emptying the buffer. once the pcnet-32 controller or host has relinquished ownership of a buffer, it must not change any field in the descriptor entry. 30 err err is the or of fram, oflo, crc, or buff. err is set by the pcnet-32 controller and cleared by the host. 29 fram framing error indicates that the incoming frame contained a non-integer multiple of eight bits and there was an fcs error. if there was no fcs error on the incoming frame, then fram will not be set even if there was a non integer multiple of eight bits in the frame. fram is not valid in internal loopback mode. fram is valid only when enp is set and oflo is not. fram is set by the pcnet-32 controller and cleared by the host. 28 oflo overflow error indicates that the receiver has lost all or part of the incoming frame, due to an inability to store the frame in a memory buffer before the internal fifo overflowed. oflo is valid only when enp is not set. oflo is set by the pcnet-32 controller and cleared by the host. 27 crc crc indicates that the receiver has detected a crc (fcs) error on the incoming frame. crc is valid only when enp is set and oflo is not. crc is set by the pcnet-32 controller and cleared by the host. 26 buff buffer error is set any time the pcnet-32 controller does not own the next buffer while data chaining a received frame. this can occur in either of two ways: 1. the own bit of the next buffer is zero. 2. fifo overflow occurred before the pcnet-32 controller received the status (rmd1[31:24]) of the next de- scriptor. if a buffer error occurs, an over- flow error may also occur inter- nally in the fifo, but will not be reported in the descriptor status entry unless both buff and oflo errors occur at the same time. buff is set by the pcnet-32 controller and cleared by the host. 25 stp start of packet indicates that this is the first buffer used by the pcnet-32 controller for this frame. it is used for data chaining buffers. stp is set by the pcnet-32 controller and cleared by the host. 24 enp end of packet indicates that this is the last buffer used by the pcnet-32 controller for this frame. it is used for data chaining buffers. if both stp and enp are set, the frame fits not one buffer and there is no data chaining. enp is set by the pcnet-32 controller and cleared by the host. 23-16 res reserved locations. these loca- tions should be read and written as zeros. 15-12 ones these four bits must be written as ones. they are written by the host and unchanged by the pcnet-32 controller. 11-0 bcnt buffer byte count is the length of the buffer pointed to by this descriptor, expressed as the two ? s complement of the length of the buffer. this field is written by the host and unchanged by the pcnet-32 controller. rmd2 bit name description 31-24 rcc receive collision count. indi- cates the accumulated number of collisions on the network since the last frame was successfully received, excluding collisions that occurred during transmissions from this node. the pcnet-32 controller implementation of this counter may not be compatible with the ilacc rcc definition. if network statistics are to be monitored, then csr114 should be used for the purpose of monitoring receive collisions instead of these bits.
AM79C965A 175 23-16 rpc runt packet count. indicates the accumulated number of runts that were addressed to this node since the last time that a receive packet was successfully received and its corresponding rmd2 ring entry was written to by the pcnet-32 controller. in order to be included in the rpc value, a runt must be long enough to meet the minimum requirement of the internal address matching logic. the minimum requirement for a runt to pass the internal address matching mechanism is: 18 bits of valid preamble plus a valid sfd detected, followed by 7 bytes of frame data. this requirement is unvarying, regardless of the address matching mechanisms in force at the time of reception (i.e. physical, logical, broadcast or promiscuous). the pcnet-32 controller implementation of this counter may not be compatible with the ilacc rpc definition. 15-12 zeros this field is reserved. pcnet-32 controller will write zeros to these locations. 11-0 mcnt message byte count is the length in bytes of the received message, expressed as an un- signed binary integer. mcnt is valid only when err is clear and enp is set. mcnt is written by the pcnet-32 controller and cleared by the host. rmd3 bit name description 31-0 res reserved locations. all bits must be zeros. transmit descriptors when ssize32 = 0 (bcr 20[8]), then the software structures are defined to be 16 bits wide, and transmit descriptors look as shown in table 61. pcnet-32 reference names within the table above refer to the descriptor definitions given in text below. since the text descriptions are for 32-bit descriptors, the table above shows the mapping of the 32-bit descriptors into the 16-bit descriptor space. since 16-bit descriptors are a subset of the 32-bit descriptors, some portions of the 32-bit descriptors may not appear in table 61. when ssize32 = 1 (bcr 20[8]), then the software structures are defined to be 32 bits wide, and transmit descriptors look as shown in table 62. table 61. transmit descriptor (ssize32 = 0) table 62. transmit descriptor (ssize32 = 1) * na = these 8 bits do not exist in any lance descriptor . the transmit descriptor ring entries (tdres) are composed of 4 transmit message descriptors (tmd0- tmd3). together they contain the following information: the address of the actual message data buffer in user or host memory. the length of the message buffer. status information indicating the condition of the buffer. the eight most significant bits of tmd1 (tmd1[31:24]) are collectively termed the status of the transmit descriptor. lance descriptor designation pcnet-32 descriptor designation address bits 15-0 bits 15-8 bits 7-0 crda+00 tmd0 tmd0[15:0] crda+02 tmd1 tmd1[31:24] tmd0[23:16] crda+04 tmd2 tmd1[15:0] crda+06 tmd3 tmd2[15:0] lance descriptor designation pcnet-32 descriptor designation address bits 31-24 bits 23-16 bits 15-8 bits 7-0 bits 31-0 ctda+00 *na tmd1[7:0] tmd0[15:8] tmd0[7:0] tmd0 ctda+04 tmd1[15:8] *na tmd2[15:8] tmd2[7:0] tmd1 ctda+08 tmd3[15:8] tmd3[7:0] *na *na tmd2 ctda+0c *na *na *na *na tmd3
176 AM79C965A tmd0 bit name description 31-0 tbadr transmit buffer address. this field contains the address of the transmit buffer that is associated with this descriptor. tmd1 bit name description 31 own this bit indicates that the de- scriptor entry is owned by the host (own=0) or by the pcnet-32 controller (own=1). the host sets the own bit after filling the buffer pointed to by the descriptor entry. the pcnet-32 controller clears the own bit after transmitting the contents of the buffer. both the pcnet-32 controller and the host must not alter a descriptor entry after it has relinquished ownership. 30 err er is the or of uflo, lcol, lcar, or rtry. err is set by the pcnet-32 controller and cleared by the host. this bit is set in the current descriptor when the error occurs, and therefore may be set in any descriptor of a chained buffer transmission. 29 add_fcs/no_fcs bit 29 functions as add_fcs when programmed for the default i/o style of pcnet-isa and when programmed for the i/o style pcnet-32 controller. bit 29 functions as no_fcs when programmed for the i/o style ilacc. add_fcs add_fcs dynamically controls the generation of fcs on a frame by frame basis. it is valid only if the stp bit is set. when add_fcs is set, the state of dxmtfcs is ignored and transmitter fcs generation is activated. when add_fcs = 0, fcs generation is controlled by dxmtfcs. add_fcs is set by the host, and unchanged by the pcnet-32 controller. this was a reserved bit in the lance (am7990). this function differs from the ilacc function for this bit. no_fcs no_fcs dynamically controls the generation of fcs on a frame by frame basis. it is valid only if the enp bit is set. when no_fcs is set, the state of dxmtfcs is ignored and transmitter fcs generation is deactivated. when no_fcs = 0, fcs generation is controlled by dxmtfcs. no_fcs is set by the host, and unchanged by the pcnet-32 controller. this was a reserved bit in the lance (am7990). this function is identi cal to the ilacc function for this bit. 28 more more indicates that more than one retry was needed to transmit a frame. the value of more is written by the pcnet-32 controller. this bit has meaning only if the enp bit is set. 27 one one indicates that exactly one retry was needed to transmit a frame. one flag is not valid when lcol is set. the value of the one bit is written by the pcnet-32 controller. this bit has meaning only if the enp bit is set. 26 def defered indicates that the pcnet-32 controller had to defer while trying to transmit a frame. this condition occurs if the channel is busy when the pcnet-32 controller is ready to transmit. def is set by the pcnet-32 controller and cleared by the host. 25 stp start of packet indicates that this is the first buffer to be used by the pcnet-32 controller for this frame. it is used for data chaining buffers. the stp bit must be set in the first buffer of the frame, or the pcnet-32 controller will skip over the descriptor and poll the next descriptor(s) until the own and stp bits are set. stp is set by the host and un- changed by the pcnet-32 controller. 24 enp end of packet indicates that this is the last buffer to be used by the pcnet-32 controller for this frame. it is used for data chaining buffers. if both stp and enp are set, the frame fits into one buffer
AM79C965A 177 and there is no data chaining. enp is set by the host and unchanged by the pcnet-32 controller. 23-16 res reserved locations. 15-12 ones must be ones. this field is written by the host and unchanged by the pcnet-32 controller. 11-0 bcnt buffer byte count is the usable length of the buffer pointed to by this descriptor, expressed as the two ? s complement of the length of the buffer. this is the number of bytes from this buffer that will be transmitted by the pcnet-32 controller. this field is written by the host and unchanged by the pcnet-32 controller. there are no minimum buffer size restrictions. tmd2 bit name description 31 buff buffer error is set by the pcnet-32 controller during transmission when the pcnet-32 controller does not find the enp flag in the current buffer and does not own the next buffer. this can occur in either of two ways: 1. the own bit of the next buffer is zero. 2. fifo underflow occurred before the pcnet-32 controller obtained the status byte (tmd1[31:24]) of the next descriptor. buff is set by the pcnet-32 controller and cleared by the host. buff error will turn off the transmitter (csr0, txon = 0). if a buffer error occurs, an un- derflow error will also occur. buff is not valid when lcol or rtry error is set during transmit data chaining. buff is set by the pcnet-32 controller and cleared by the host. 30 uflo underflow error indicates that the transmitter has truncated a message due to data late from memory. uflo indicates that the fifo has emptied before the end of the frame was reached. upon uflo error, the transmitter is turned off (csr0, txon = 0). uflo is set by the pcnet-32 controller and cleared by the host. 29 exdef excessive deferral. indi- cates that the transmitter has experienced excessive deferral on this transmit frame, where excessive deferral is defined in iso 8802-3 (ieee/ansi 802.3). 28 lcol late collision indicates that a collision has occurred after the slot time of the channel has elapsed. the pcnet-32 controller does not retry on late collisions. lcol is set by the pcnet-32 controller and cleared by the host. 27 lcar loss of carrier is set in aui mode when the carrier is lost during an pcnet-32 controller- initiated transmission. the pcnet-32 controller does not re-try upon loss of carrier. it will continue to transmit the whole frame until done. in 10base-t mode lcar will be set when the t-mau is in link fail state. lcar is not valid in internal loopback mode. lcar is set by the pcnet-32 controller and cleared by the host. 26 rtry retry error indicates that the transmitter has failed after 16 attempts to successfully transmit a message, due to repeated collisions on the medium. if drty = 1 in the mode register, rtry will set after 1 failed transmission attempt. rtry is set by the pcnet-32 controller and cleared by the host. 25-16 tdr time domain reflec- tometry reflects the state of an internal pcnet-32 controller counter that counts at a 10 mhz rate from the start of a transmis- sion to the occurrence of a colli- sion or loss of carrier. this value is useful in determining the ap- proximate distance to a cable fault. the tdr value is written by the pcnet-32 controller and is valid only if rtry is set. note that 10 mhz gives very low resolution and in general has not been found to be particularly useful. this feature is here primarily to maintain full
178 AM79C965A compatibility with the lance (am7990). 15-4 res reserved locations. 3-0 trc transmit retry count. in- dicates the number of transmit retries of the associated packet. the maximum count is 15. how- ever, if a retry error occurs, the count will roll over to zero. in this case only, the transmit retry count value of zero should be interpreted as meaning 16. trc is written by the pcnet-32 controller into the last transmit descriptor of a frame, or when an error terminates a frame. valid only when own = 0. tmd3 bit name description 31-0 res reserved locations. all bits must be zeros.
AM79C965A 179 register summary csrs ? control and status registers key: x = undefined r = running register s = setup register t = test register rap addr symbol default value after h_reset (hex) comments use 00 csr0 xxxx 0004 pcnet-32 controller status r 01 csr1 xxxx xxxx lower iadr: maps to location 16 s 02 csr2 xxxx xxxx upper iadr: maps to location 17 s 03 csr3 xxxx 0000 interrupt masks and deferral control s 04 csr4 xxxx 0115 test and features control r 05 csr5 xxxx 0000 reserved t 06 csr6 xxxx xxxx rxtx: rx/tx descriptor table length t 07 csr7 xxxx 0000 reserved t 08 csr8 xxxx xxxx ladr0: logical address filter ? ladrf[15:0] t 09 csr9 xxxx xxxx ladr1: logical address filter ? ladrf[31:16] t 10 csr10 xxxx xxxx ladr2: logical address filter ? ladrf[47:32] t 11 csr11 xxxx xxxx ladr3: logical address filter ? ladrf[63:48] t 12 csr12 xxxx xxxx padr0: physical address register ? padr[15:0][ t 13 csr13 xxxx xxxx padr1: physical address register ? padr[31:16] t 14 csr14 xxxx xxxx padr2: physical address register ? padr[47:32] t 15 csr15 see register desc. mode: mode register s 16 csr16 xxxx xxxx iadr: base address of init block lower (copy) t 17 csr17 xxxx xxxx iadr: base address of init block upper (copy) t 18 csr18 xxxx xxxx crba: current rcv buffer address lower t 19 csr22 xxxx xxxx crba: current rcv buffer address upper t 20 csr20 xxxx xxxx cxba: current xmt buffer address lower t 21 csr21 xxxx xxxx cxba: current xmt buffer address upper t 22 csr22 xxxx xxxx nrba: next rcv buffer address lower t 23 csr23 xxxx xxxx nrba: next rcv buffer address upper t 24 csr24 xxxx xxxx badr: base address of rcv ring lower s 25 csr25 xxxx xxxx badr: base address of rcv ring upper s 27 csr27 xxxx xxxx nrda: next rcv descriptor address upper t 28 csr28 xxxx xxxx crda: current rcv descriptor address lower t 29 csr29 xxxx xxxx crda: current rcv descriptor address upper t 30 csr30 xxxx xxxx badx: base address of xmt ring lower s 31 csr31 xxxx xxxx badx: base address of xmt ring upper s 32 csr32 xxxx xxxx nxda: next xmt descriptor address lower t 33 csr33 xxxx xxxx nxda: next xmt descriptor address upper t 34 csr34 xxxx xxxx cxda: current xmt descriptor address lower t 35 csr35 xxxx xxxx cxda: current xmt descriptor address upper t 36 csr36 xxxx xxxx nnrda: next next receive descriptor address lower t
180 AM79C965A register summary (continued) csrs ? control and status registers key: x = undefined r = running register s = setup register t = test register rap addr symbol default value after h_reset (hex) comments use 37 csr37 xxxx xxxx nnrda: next next receive descriptor address upper t 38 csr38 xxxx xxxx nnxda: next next transmit descriptor address lower t 39 csr39 xxxx xxxx nnxda: next next transmit descriptor address upper t 40 csr40 xxxx xxxx crbc: current rcv status and byte count lower t 41 csr41 xxxx xxxx crbc: current rcv status and byte count upper t 42 csr42 xxxx xxxx cxbc: current xmt status and byte count lower t 43 csr43 xxxx xxxx cxbc: current xmt status and byte count upper t 44 csr44 xxxx xxxx nrbc: next rcv status and byte count lower t 45 csr45 xxxx xxxx nrbc: next rcv status and byte count upper t 46 csr46 xxxx xxxx poll: poll time counter t 47 csr47 xxxx xxxx pi: polling interval s 48 csr48 xxxx xxxx tmp2: temporary storage lower t 49 csr48 xxxx xxxx tmp2: temporary storage upper t 50 csr50 xxxx xxxx tmp3: temporary storage lower t 51 csr50 xxxx xxxx tmp3: temporary storage upper t 52 csr52 xxxx xxxx tmp4: temporary storage lower t 53 csr52 xxxx xxxx tmp4: temporary storage upper t 54 csr54 xxxx xxxx tmp5: temporary storage lower t 55 csr54 xxxx xxxx tmp5: temporary storage upper t 56 csr56 xxxx xxxx tmp6: temporary storage lower t 57 csr56 xxxx xxxx tmp6: temporary storage upper t 58 csr58 see register desc. sws: software style s 59 csr59 xxxx 0105 ir: ir register t 60 csr60 xxxx xxxx pxda: previous xmt descriptor address lower t 61 csr61 xxxx xxxx pxda: previous xmt descriptor address upper t 62 csr62 xxxx xxxx pxbc: previous xmt status and byte count lower t 63 csr63 xxxx xxxx pxbc: previous xmt status and byte count upper t 64 csr64 xxxx xxxx nxba: next xmt buffer address lower t 65 csr65 xxxx xxxx nxba: next xmt buffer address upper t 66 csr66 xxxx xxxx nxbc: next xmt status and byte count lower t 67 csr67 xxxx xxxx nxbc: next xmt status and byte count upper t 68 csr68 xxxx xxxx xstmp: xmt status temporary storage lower t 69 csr69 xxxx xxxx xstmp: xmt status temporary storage upper t 70 csr70 xxxx xxxx rstmp: rcv status temporary storage lower t 71 csr71 xxxx xxxx rstmp: rcv status temporary storage upper t 72 csr72 xxxx xxxx rcvrc: rcv ring counter t
AM79C965A 181 register summary csrs ? control and status registers (continued) key: x = undefined r = running register s = setup register t = test register rap addr symbol default value after h_reset (hex) comments use 73 csr73 xxxx xxxx reserved t 74 csr74 xxxx xxxx xmtrc: xmt ring counter t 75 csr75 xxxx xxxx reserved t 76 csr76 xxxx xxxx rcvrl: rcv ring length s 77 csr77 xxxx xxxx reserved t 78 csr78 xxxx xxxx xmtrl: xmt ring length s 79 csr79 xxxx xxxx reserved t 80 csr80 xxxx e810 burst and fifo threshold control s 81 csr81 xxxx xxxx reserved t 82 csr82 xxxx 0000 dmabat: bus acitivty timer s 83 csr83 xxxx xxxx reserved t 84 csr84 xxxx xxxx dmaba: dma address lower t 85 csr85 xxxx xxxx dmaba: dma address upper t 86 csr86 xxxx xxxx dmabc: buffer byte counter t 87 csr87 xxxx xxxx reserved t 88 csr88 0243 0003 chip id lower t 89 csr89 xxxx 0243 chip id upper t 90 csr90 xxxx xxxx reserved t 91 csr91 xxxx xxxx reserved t 92 csr92 xxxx xxxx rcon: ring length conversion t 93 csr93 xxxx xxxx reserved t 94 csr94 xxxx 0000 xmttdr: transmit time domain reflectometry count t 95 csr95 xxxx xxxx reserved t 96 csr96 xxxx xxxx scr0: biu scratch register 0 lower t 97 csr97 xxxx xxxx scr0: biu scratch register 0 upper t 98 csr98 xxxx xxxx scr1: biu scratch register 1 lower t 99 csr99 xxxx xxxx scr1: biu scratch register 1 upper t 100 csr100 xxxx 0200 bus time-out s 101 csr101 xxxx xxxx reserved t 102 csr102 xxxx xxxx reserved t 103 csr103 xxxx 0105 reserved t 104 csr104 xxxx xxxx swap: swap register lower t 105 csr105 xxxx xxxx swap: swap register upper t 106 csr106 xxxx xxxx reserved t 107 csr107 xxxx xxxx reserved t 108 csr108 xxxx xxxx bmscr: bmu scratch register lower t 109 csr109 xxxx xxxx bmscr: bmu scratch register upper t
182 AM79C965A register summary (continued) csrs ? control and status registers key: x = undefined r = running register s = setup register t = test register rap addr symbol default value after h_reset (hex) comments use 110 csr110 xxxx xxxx reserved t 111 csr111 xxxx xxxx reserved t 112 csr112 xxxx 0000 missed frame count r 113 csr113 xxxx xxxx reserved t 114 csr114 xxxx 0000 receive collision count r 115 csr115 xxxx xxxx reserved t 116 csr116 xxxx xxxx reserved t 117 csr117 xxxx xxxx reserved t 118 csr118 xxxx xxxx reserved t 119 csr119 xxxx xxxx reserved t 120 csr120 xxxx xxxx reserved t 121 csr121 xxxx xxxx reserved t 122 csr122 see register desc. receive frame alignment control s 123 csr123 xxxx xxxx reserved t 124 csr124 see register desc. bmu test t 125 csr125 xxxx xxxx reserved t 126 csr126 xxxx xxxx reserved t 127 csr127 xxxx xxxx reserved t
AM79C965A 183 register summary bcr ? bus configuration registers key: srm = software relocatable mode * registers marked with an asterisk (*) have no default value, since they are not observable without first being programmed, eith er through the eeprom read operation or through the software relocatable mode. therefore, the only observable values for these registers a re those that have been programmed and a default value is not applicable. rap addr. mnemonic default (hex) name programmability user eeprom srm 0 msrda 0005 master mode read active no no no 1 mswra 0005 master mode write active no no no 2 mc n/a* miscellaneous configuration yes yes yes 3 reserved n/a no no no 4 lnkst 00c0 link status (default) yes no no 5 led1 0084 receive (default) yes no no 6 led2 0088 receive polarity (default) yes no no 7 led3 0090 transmit (default) yes no no 8 ? 15 reserved n/a no no no 16 iobasel n/a* i/o base address lower yes yes yes 17 iobaseu n/a* i/o base address upper yes yes yes 18 bsbc 2101 burst size and bus control yes yes no 19 eecas 0002 eeprom control and status yes no no 20 swstyle 0000 software style yes no no 21 intcon n/a* interrupt control yes yes yes
184 AM79C965A absolute maximum ratings storage temperature .................... ? 65 c to +150 c ambient temperature under bias ..................................... ? 65 c to +125 c supply voltage to av ss or dv ss (av dd , dv dd )..................... ? 0.3 v to +6.0 v stresses above those listed under absolute maximum ratings may cause permanent device failure. functionality at or above these limits is not implied. exposure to absolute maximum ratings for extended periods may affect device reliability. programming conditions may differ. operating ranges commercial (c) devices temperature (t a ) ................................. 0 c to +70 c supply voltages (av dd , dv dd ) ..............................................5 v 5% all inputs within the range: ....... av ss ? 0.5 v vin av dd + 0.5 v, or dv ss ? 0.5 v vin dv dd + 0.5 v operating ranges define those limits between which the functionality of the device is guaranteed. dc characteristics over commercial operating ranges unless otherwise specified parameter symbol parameter description test conditions min max unit digital input voltage v il input low voltage 0.8 v v ih input high voltage 2.0 v digital ouput voltage v ol output low voltage i ol1 = 8 ma, i ol2 = 4 ma (notes 1 and 5) 0.45 v v oh output high voltage (note 2) i oh = ? 4 ma (note 5) 2.4 v digital input leakage current i ix input leakage current (note 3) v dd = 5 v, v in = 0 v ? 10 10 a digital ouput leakage current i ozl output low leakage current (note 4) v out = 0 v ? 10 a i ozh output high leakage current (note 4) v out = v dd 10 a crystal input v ilx xtal1 input low threshold voltage v in = external clock ? 0.5 0.8 v v ilhx xtal1 input high threshold voltage v in = external clock v dd ? 0.8 v dd + 0.5 v i ilx xtal1 input low current v in = 0 v active ? 120 0 a sleep ? 10 +10 a i ihx xtal1 input high current v in = v dd active 0 120 a sleep 400 a attachment unit interface i iaxd input current at di+ and di ? ? 1 v < v in < av dd +0.5 v ? 500 +500 a i iaxc input current at ci+ and ci ? ? 1 v < v in < av dd +0.5 v ? 500 +500 a v aod differential output voltage |(do+) ? (do ? )| r l = 78 ? 630 1200 mv v aodoff transmit differential output idle voltage r l = 78 ? (note 9) ? 40 +40 mv
AM79C965A 185 dc characteristics over commercial operating ranges unless otherwise specified (continued) parameter symbol parameter description test conditions min max unit attachment unit interface (continued) i aodoff transmit differential output idle current r l = 78 ? (note 8) ? 1 +1 ma v cmt transmit output common mode voltage r l = 78 ? 2.5 av dd v v odi do transmit differential output voltage imbalance r l = 78 ? (note 7) 25 mv v ath receive data differential input threshold ? 35 35 mv v asq di and ci differential input threshold (squelch) ? 275 ? 160 mv v irdvd di and ci differential mode input voltage range ? 1.5 +1.5 v v icm di and ci input bias voltage i in = 0 ma av dd ? 3.0 av dd ? 1.0 v v opd do undershoot voltage at zero differential on transmit return to zero (etd) (note 9) ? 100 mv twisted pair interface i irxd input current at rxd av ss < v in < av dd ? 500 500 a r rxd rxd differential input resistance 10 k ? v tivb rxd+, rxd ? open circuit input voltage (bias) i in = 0 ma av dd ? 3.0 av dd ? 1.5 v v tidv differential mode input voltage range (rxd ) av dd = 5 v ? 3.1 +3.1 v v tsq+ rxd positive squelch threshold (peak) sinusoid 5 mhz f 10 mhz 300 520 mv v tsq ? rxd negative squelch threshold (peak) sinusoid 5 mhz f 10 mhz ? 520 ? 300 mv v ths+ rxd post-squelch positive threshold (peak) sinusoid 5 mhz f 10 mhz 150 293 mv v ths ? rxd post-squelch negative threshold (peak) sinusoid 5 mhz f 10 mhz ? 293 ? 150 mv v ltsq+ rxd positive squelch threshold (peak) lrt = low 180 312 mv v lt s q ? rxd negative squelch threshold (peak) lrt = low ? 312 ? 180 mv v lt h s + rxd post-squelch positive threshold (peak) lrt = low 90 176 mv v lths ? rxd post-squelch negative threshold (peak) lrt = low ? 176 ? 90 mv
186 AM79C965A dc characteristics over commercial operating ranges unless otherwise specified (continued) notes: 1. iol1 = 8 ma applies to all output and i/o pins except hold and ldev . iol2 = 4 ma applies to hold and ldev only. 2. voh does not apply to open-drain output pins. 3. iix applies to all input only pins except d i , c i , and xtal1. 4. iozl and iozh apply to all three-state output pins and bi-directional pins. 5. outputs are cmos and will be driven to rail if the load is not resistive. 6. parameter not tested; value determined by characterization. 7. tested, but to values in excess of limits. test accuracy not sufficient to allow screening guard bands. 8. correlated to other tested parameters ? not tested directly. 9. test not implemented to data sheet specification. parameter symbol parameter description test conditions min max unit twisted pair interface (continued) v rxdth rxd switching threshold (note 4) ? 35 35 mv v txh txd and txp output high voltage dv ss = 0 v dv dd ? 0.6 dv dd v v txl txd and txp output low voltage dv dd = +5 v dv ss dv ss + 0.6 v v txi txd and txp differential output voltage imbalance ? 40 +40 mv v txoff txd and txp idle output voltage 40 mv r tx txd differential driver output impedance (note 4) 40 ? txp differential driver output impedance (note 4) 80 ? ieee 1149.1 (jtag) test port v il tck, tms, tdi 0.8 v v ih tck, tms, tdi 2.0 v v ol tdo i ol = 2.0 ma 0.4 v v oh tdo i oh = ? 0.4 ma 2.4 v i il tck, tms, tdi v dd = 5.5 v, v i = 0.5 v ? 200 a i ih tck, tms, tdi v dd =5.5 v, v i = 2.7v ? 100 a i oz tdo v out = 0 v, v out = v dd ? 10 +10 a power supply current i dd active power supply current xtal1 = 20 mhz 100 ma i ddcoma coma mode power supply current sleep active 200 a i ddsnooze snooze mode power supply current awake bit set active 10 ma pin capacitance c in input pin capacitance f c = 1 mhz (note 6) 10 pf c o i/o or output pin capacitance f c = 1 mhz (note 6) 10 pf c clk bclk pin capacitance f c = 1 mhz (note 6) 10 pf
AM79C965A 187 switching characteristics: bus interface parameter symbol parameter description test conditions (c l = 50 pf unless otherwise noted) min max unit clock timing clk frequency 1 33 mhz t 1 clk period 30 1000 ns t 2 clk high time @ 2.0 v 14 ns t 3 clk low time @ 0.8 v 14 ns t 4 clk fall time 2.0 v to 0.8 v (note 1) 3 ns t 5 clk rise time 0.8 v to 2.0 v (note 1) 3 ns output and float delay timing t 6 a2 ? a31, be0 ? be3 , m/io , d/c , w/r , ads , hold, hldao, intr, eads , rdy valid delay 312ns t 7 a2 ? a31, be0 ? be3 , m/io , d/c , w/r , ads , rdy float delay 18 ns t 8 ns t 8a blast valid delay 3 12 ns t 9 blast float delay 18 ns t 10 d0 ? d31 data valid delay 3 12 ns t 11 d0 ? d31 data float delay 18 ns t 12 (this symbol is not used) t 13 (this symbol is not used) setup and hold timing t 14 lbs16 setup time 5 ns t 15 lbs16 hold time 2 ns t 16 brdy , rdyrtn setup time 5 ns t 17 brdy , rdyrtn hold time 2 ns t 18 holdi, ahold, hlda, sleep setup time 6ns t 18a boff setup time 8 ns t 19 holdi, boff , ahold, hlda, sleep hold time 2ns t 20 reset, clkreset setup time 5ns t 21 reset, clkreset hold time 2ns t 22 d0 ? d31, a2 ? a31, be0 ? be3 , ads , m/io , d/c , w/r setup time 4ns t 23 d0 ? d31, a2 ? a31, be0 ? be3 , ads , m/io , d/c , w/r hold time 2ns
188 AM79C965A switching characteristics: bus interface (continued) notes: 1. not 100% tested; guaranteed by design characterization. 2. parameter value is given for automatic eeprom read operation. when eeprom port (bcr19) is used to access the eeprom, software is responsible for meeting eeprom timing requirements. parameter symbol parameter description test conditions (c l = 50 pf unless otherwise noted) min max unit jtag (ieee 1149.1) test signal timing t 24 tck frequency 10 mhz t 25 tck period 100 ns t 26 tck high time @ 2.0 v 45 ns t 27 tck low time @ 0.8 v 45 ns t 28 tck rise time 4ns t 29 tck fall time 4ns t 30 tdi, tms setup time 16 ns t 31 tdi, tms hold time 10 ns t 32 tdo valid delay 3 60 ns t 33 tdo float delay 50 ns t 34 all outputs (non-test) valid delay 325ns t 35 all outputs (non-test) float delay 36 ns t 36 all inputs (non-test)) setup time 8ns t 37 all inputs (non-test) hold time 7 ns ldev timing t 38 ads asserted to ldev asserted 20 ns t 39 ldev valid pulse width t bclk data bus activation timing (slave) t 40 data bus driven after ads sampled asserted 1bclk hold inactive timing t 41 hold deasserted to hold asserted 2 bclk ? 15 ns eeprom timing t 42 eesk frequency (note 2) 650 khz t 43 eesk high time (note 2) 780 ns t 44 eesk low time (note 2) 780 ns t 45 eecs, eedi, shfbusy valid output delay from eesk (note 2) ? 15 +15 ns t 46 eecs low time (note 2) 1550 ns t 47 eedo setup time to eesk 50 ns t 48 eedo hold time to eesk 0 ns
AM79C965A 189 switching characteristics: 10base-t interface note: 1. not tested; parameter guaranteed by characterization. parameter symbol parameter description test conditions min max unit transmit timing t tetd transmit start of idle 250 350 ns t tr transmitter rise time (10% to 90%) 5.5 ns t tf transmitter fall time (90% to 10%) 5.5 ns t tm transmitter rise and fall time mismatch 1ns t perlp idle signal period 8 24 ms t pwlp idle link pulse width (note 1) 75 120 ns t pwplp predistortion idle link pulse width (note 1) 45 55 ns t ja transmit jabber activation time 20 150 ms t jr transmit jabber reset time 250 750 ms t jrec transmit jabber recovery time (minimum time gap between transmitted frames to prevent jabber activation) 1.0 s receive timing t pwnrd rxd pulse width not to turn off internal carrier sense vin > vths (min) 136 ? ns t pwroff rxd pulse width to turn off vin > vths (min) 200 ns t retd receive start of idle 200 ns t rcvon rcv asserted delay t ron - 50 t ron + 100 ns t rcvoff rcv de-asserted delay 20 62 ms collision detection and sqe test t colon col asserted delay 750 900 ns t coloff col de-asserted delay 20 62 ms
190 AM79C965A switching characteristics: aui notes: 1. di pulses narrower than tpwodi (min) will be rejected; pulses wider than tpwodi (max) will turn internal di carrier sense on. 2. di pulses narrower than tpwkdi (min) will maintain internal di carrier sense on; pulses wider than tpwkdi (max) will turn internal di carrier sense off. 3. ci pulses narrower than tpwoci (min) will be rejected; pulses wider than tpwoci (max) will turn internal ci carrier sense on. 4. ci pulses narrower than tpwkci (min) will maintain internal ci carrier sense on; pulses wider than tpwkci (max) will turn internal ci carrier sense off. parameter symbol parameter description test conditions min max unit aui port t dotr do+,do- rise time (10% to 90%) 2.5 5.0 ns t dotf do+,do- fall time (90% to 10%) 2.5 5.0 ns t dorm do+,do- rise and fall time mismatch ? 1.0 ns t doetd do+/- end of transmission 200 375 ns t pwodi di pulse width accept/reject threshold |v in | > |v asq | (note 1) 15 45 ns t pwkdi di pulse width maintain/turn-off threshold |v in | > |v asq | (note 2) 136 200 ns t pwoci ci pulse width accept/reject threshold |v in | > |v asq | (note 3) 10 26 ns t pwkci ci pulse width maintain/turn-off threshold |v in | > |v asq | (note 4) 90 160 ns internal mendec clock timing t x1 xtal1 period v in = external clock 49.995 50.005 ns t x1h xtal1 high pulse width v in = external clock 20 ns t x1l xtal1 low pulse width v in = external clock 20 ns t x1r xtal1 rise time v in = external clock 5 ns t x1f xtal1 fall time v in = external clock 5 ns
AM79C965A 191 switching characteristics: gpsi notes: 1. clsn must be asserted for a continuous period of 110 nsec or more. assertion for less than 110 nsec period may or may not result in clsn recognition. 2. rxcrs should meet jitter requirements of ieee 802.3 specification. 3. clsn assertion before 51.2 m sec will be indicated as a normal collision. clsn assertion after 51.2 m sec will be consid- ered as a late receive collision. parameter symbol parameter description test conditions min max unit transmit timing t gpt1 stdclk period (802.3 compliant) 99.99 100.01 ns t gpt2 stdclk high time 40 60 ns t gpt3 txdat and txen delay from stdclk 070ns t gpt4 rxcrs setup before stdclk (last bit) 210 ns t gpt5 rxcrs hold after txen 0ns t gpt6 clsn active time to trigger collision (note 1) 110 ns t gpt7 clsn active to rxcrs to prevent lcar assertion 0ns t gpt8 clsn active to rxcrs for sqe hearbeat window 04.0 s t gpt9 clsn active to rxcrs for normal collision 0 51.2 s receive timing t gpr1 srdclk period (note 2) 80 120 ns t gpr2 srdclk high time (note 2) 30 80 ns t gpr3 srdclk low time (note 2) 30 80 ns t gpr4 rxdat and rxcrs setup to srdclk 15 ns t gpr5 rxdat hold after srdclk 15 ns t gpr6 rxcrs hold after srdclk 0ns t gpr7 clsn active to first srdclk (collision recognition) 0ns t gpr8 clsn active to srdclk for address type designation bit (note 3) 51.2 s t gpr9 clsn setup to last srdclk for collision recognition 210 ns t gpr10 clsn active 110 ns t gpr11 clsn inactive setup to first srdclk 300 ns t gpr12 clsn inactive hold to last srdclk 300 ns
192 AM79C965A switching characteristics: eadi parameter symbol parameter description test conditions min max unit t ead1 srd setup to srdclk 40 ns t ead2 srd hold to srdclk 40 ns t ead3 sf/bd change to srdclk ? 15 +15 ns t ead4 ear de-assertion to srdclk (first rising edge) 50 ns t ead5 ear assertion after sfd event (packet rejection) 0 51,090 ns t ead6 ear assertion 110 ns
AM79C965A 193 key to switching waveforms switching test circuits normal and three-state outputs ks000010 must be steady may change from h to l may change from l to h does not apply don't care any change permitted will be steady will be changing from h to l will be changing from l to h changing state unknown center line is high impedance off" state waveform inputs outputs c l v threshold i ol i oh sense point 18219-46
194 AM79C965A switching test circuits aui do switching test circuit txd switching test circuit txp outputs test circuit av dd do+ 154 ? 100 pf do- av 52.3 ? test point 18219-47 dv dd txd+ 294 ? 100 pf txd- dv ss 294 ? test point includes test jig capacitance 18219-48 dv dd txp+ 715 ? 100 pf txp- dv ss 715 ? test point includes test jig capacitance 18219-49
AM79C965A 195 estimated output valid delay vs. load capacitance note that this graph represents change in output delay for estimated conditions. output delay versus load capacitance under estimated conditions switching waveforms: system bus interface blck waveform max+4 notes: this graph will not be linear outside of the cl range shown. max = maximum value given in a.c. characteristics table. max+2 max+6 max max ? d2 maximum output delay (ns) 50 cl (pf) 75 100 125 150 25 18219-50 bclk 0.8v 1.5v 2.0v t2 t4 t1 t5 t3 0.8v 18219-51
196 AM79C965A switching waveforms: system bus interface output valid delay timing maximum float delay timing bclk t 10 a2 ? a31, be0 ? be3, m/io, d/c, w/r, ads, hold, hldao, intr, rdy, eads tx tx tx min max valid n valid n+1 d0 ? d31 min max valid n valid n+1 t 6 t 8a blast min max valid n valid n+1 18219-52 bclk t 10 a2 ? a31, be0 ? be3, m/io, d/c, w/r, ads tx tx tx min valid n d0 ? d31 valid n t 6 t 8a blast valid n t 7 min min t 9 t 11 18219-53
AM79C965A 197 switching waveforms: system bus interface input setup and hold timing ready data setup and hold timing bclk t 15 lbs16 t 14 holdi, ahold, hlda, sleep reset, clkreset a2 ? a31, be0 ? be3, ads, d/c, m/io, w/r t 18 tx tx t 19 t 20 t 21 t 22 t 23 boff t 18 a t 19 18219-54 bclk t 23 d0 ? d31 t2 tx rdy, brdy, rdyrtn t 22 t 16 t 17 18219-55
198 AM79C965A switching waveforms: system bus interface jtag (ieee 1149.1) tck waveform jtag (ieee 1149.1) test signal timing tck 0.8v 1.5v 2.0v t26 t29 t25 t28 t27 0.8v 18219-56 tck tdi, tms tdo t 31 output signals t 25 t 30 t 32 t 34 t 37 t 36 input signals t 35 t 35 t 33 18219-57
AM79C965A 199 switching waveforms: system bus interface ldev timing and data bus activation timing hold inactive timing bclk t 38 ads tx tx tx ldev min max a2 ? a31, be0 ? be3 , m/io, d/c, w/r, rdy valid pcnet-32 address t 39 d0 ? d31 valid pcnet-32 data t 40 18219-58 bclk hlda tx tx tx hold t 41 18219-59
200 AM79C965A switching waveforms: system bus interface automatic eeprom read functional timing automatic eeprom read timing eecs eesk eedi shfbusy eedo 01 10 a5 a4 a3 a2 a1 a0 d15 d14 d13 d2 d3 d0 falling transition on shfbusy after 17th word read if the checksum adjust byte in byte 1fh of eeprom is correct. 18219-60 eesk t 44 t 43 t 45 t 47 t 48 eedo stable eedi shfbusy eecs t 46 18219-61
AM79C965A 201 switching waveforms: 10base-t interface transmit timing idle link test pulse txd+ txp+ txd- txp- xmt t tr t tf t tetd 18219-62 txd+ t perlp t pwlp t pwplp txp+ txd- txp- 18219-63
202 AM79C965A switching waveforms: 10base-t interface receive thresholds (lrt = 0) receive threshold (lrt = 1) rxd v tsq+ v tsq ? v ths ? v ths+ 18219-64 rxd v ltsq+ v ltsq ? v lths ? v lths+ 18219-65
AM79C965A 203 switching waveforms: aui transmit timing ? start of packet transmit timing ? end of packet (last bit = 0) note 1: internal signal and is shown for clarification only. note 1: t xi t dotr t dotf t x1h t x1l t x1f t x1r 1 1 0 1 xtal1 istdclk (note 1) itxdat+ (note 1) do+ do ? do 0 1 1 itxen (note 1) 18219-66 typical > 200 ns t doetd xtal1 istdclk (note 1) itxen (note 1) itxdat+ (note 1) do+ do ? do 0 1 0 0 10 bit (n ? 2) bit (n ? 1) bit (n) 1 note 1: internal signal and is shown for clarification only. 18219-67
204 AM79C965A switching waveforms: aui transmit timing ? end of packet (last bit = 1) typical > 250 ns t doetd xtal1 itxen (note 1) itxdat+ (note 1) do+ do ? do 0 11 0 1 bit (n ? 2) bit (n ? 1) bit (n) 1 istdclk (note 1) note 1: internal signal and is shown for clarification only. 18219-68
AM79C965A 205 switching waveforms: aui receiving timing diagram collision timing diagram port do etd waveform di+/ ? v asq t pwodi t pwkdi t pwkdi 18219-69 ci+/ ? v asq t pwoci t pwkci t pwkci 18219-70 t doetd do+/ ? 40 mv 100 mv max. 0 v 80 bit times 18219-71
206 AM79C965A switching waveforms: gpsi transmit timing receive timing transmit clock (stdclk) transmit data (txdat) transmit enable (txen) carrier present (rxcrs) (note 1) collision (clsn) (note 2) (first bit preamble) (last bit ) t gpt8 t gpt7 t gpt6 t gpt5 t gpt3 t gpt4 t gpt9 t gpt3 t gpt3 t gpt2 t gpt1 18219-72 notes: 1. if rxcrs is not present during transmission, lcar bit in tmd2 will be set. 2. if clsn is not present during or shortly after transmission, cerr in csr0 will be set. receive clock (srdclk) (first bit preamble) (address type designation bit) (last bit) t gpr5 t gpr7 t gpr11 (no collision) receive data (rxdat) carrier present (rxcrs) collision (clsn), active collision (clsn), inactive t gpr12 t gpr10 t gpr9 t gpr8 t gpr6 t gpr5 t gpr4 t gpr4 t gpr1 t gpr2 t gpr3 18219-7 3
AM79C965A 207 switching waveforms: eadi eadi reject timing ear srdclk srd sf/bd t ead4 t ead1 t ead2 one zero one sfd bit 0 bit 1 bit 2 bit 3 bit 4 bit 8 bit 0 bit 7 bit 8 t ead3 t ead3 t ead5 t ead6 preamble data field reject accept 18219-74
208 AM79C965A physical dimensions* pqr160 plastic quad flat pack trimmed and formed pqr 160 dwg rev aa; 08/00
appendix a AM79C965A a-209 pcnet-32 compatible media interface modules pcnet-32 compatible 10base-t filters and transformers the table below provides a sample list of pcnet-32 compatible 10base-t filter and transformer modules available from various vendors. contact the respective manufacturer for a complete and updated listing of components. pcnet-32 compatible aui isolation transformers the table below provides a sample list of pcnet-32 compatible aui isolation transformers available from various ven- dors. contact the respective manufacturer for a complete and updated listing of components. manufacturer part no. package filters and transformers filters transformers and choke filters transformers dual choke filters transformers dual chokes bel fuse a556-2006-de 16-pin 0.3 ? dil bel fuse 0556-2006-00 14-pin sip bel fuse 0556-2006-01 14-pin sip bel fuse 0556-6392-00 16-pin 0.5 ? dil halo electronics fd02-101g 16-pin 0.3 ? dil halo electronics fd12-101g 16-pin 0.3 ? dil halo electronics fd22-101g 16-pin 0.3 ? dil pca electronics epa1990a 16-pin 0.3 ? dil pca electronics epa2013d 16-pin 0.3 ? dil pca electronics epa2162 16-pin 0.3 ? sip pulse engineering pe-65421 16-pin 0.3 ? dil pulse engineering pe-65434 16-pin 0.3 ? sil pulse engineering pe-65445 16-pin 0.3 ? dil pulse engineering pe-65467 12-pin 0.5 ? smt valor electronics pt3877 16-pin 0.3 ? dil valor electronics fl1043 16-pin 0.3 ? dil manufacturer part no. package description bel fuse a553-0506-ab 16-pin 0.3 ? dil 50 h bel fuse s553-0756-ae 16-pin 0.3 ? smd 75 h halo electronics td01-0756k 16-pin 0.3 ? dil 75 h halo electronics tg01-0756w 16-pin 0.3 ? smd 75 h pca electronics ep9531-4 16-pin 0.3 ? dil 50 h pulse engineering pe64106 16-pin 0.3 ? dil 50 h pulse engineering pe65723 16-pin 0.3 ? smt 75 h valor electronics lt6032 16-pin 0.3 ? dil 75 h valor electronics st7032 16-pin 0.3 ? smd 75 h
a-210 AM79C965A pcnet-32 compatible dc/dc converters the table below provides a sample list of pcnet-32 compatible dc/dc converters available from various vendors. contact the respective manufacturer for a complete and updated listing of components. manufacturer contact information contact the following companies for further information on their products: manufacturer part no. package voltage remote on/off halo electronics dcu0-0509d 24-pin dip 5/-9 no halo electronics dcu0-0509e 24-pin dip 5/-9 yes pca electronics epc1007p 24-pin dip 5/-9 no pca electronics epc1054p 24-pin dip 5/-9 yes pca electronics epc1078 24-pin dip 5/-9 yes valor electronics pm7202 24-pin dip 5/-9 no valor electronics pm7222 24-pin dip 5/-9 yes company u.s. and domestic asia europe bel fuse phone: fax: (201) 432-0463 852-328-5515 33-1-69410402 (201) 432-9542 852-352-3706 33-1-69413320 halo electronics phone: fax: (415) 969-7313 65-285-1566 (415) 367-7158 65-284-9466 pca electronics phone: fax: (818)-892-0761 852-553-0165 33-1-44894800 (hpc in hong kong) (818)-894-5791 852-873-1550 33-1-42051579 pulse engineering phone: fax: (619) 674-8100 852-425-1651 353-093-24107 (619) 675-8262 852-480-5974 353-093-24459 valor electronics phone: fax: (619) 537-2500 852-513-8210 49-89-6923122 (619) 537-2525 852-513-8214 49-89-6926542
appendix b AM79C965A b-1 recommendation for power and ground decoupling the mixed analog/digital circuitry in the pcnet-32 make it imperative to provide noise-free power and ground connections to the device. without clean power and ground connections, a design may suffer from high bit error rates or may not function at all. hence, it is highly recommended that the guidelines presented here are followed to ensure a reliable design. decoupling/bypass capacitors: adequate decoupling of the power and ground pins and planes is required by all pcnet-32 designs. this includes both low-frequency bulk capacitors and high frequency capacitors. it is rec- ommended that at least one low-frequency bulk (e.g. 22 f) decoupling capacitor be used in the area of the pcnet-32 device. the bulk capacitor(s) should be con- nected directly to the power and ground planes. in ad- dition, at least 8 high frequency decoupling capacitors (e.g. 0.1 f multilayer ceramic capacitors) should be used around the periphery of the pcnet-32 device to prevent power and ground bounce from affecting de- vice operation. to reduce the inductance between the power and ground pins and the capacitors, the pins should be connected directly to the capacitors, rather than through the planes to the capacitors. the sug- gested connection scheme for the capacitors is shown in the figure below. note also that the traces connecting these pins to the capacitors should be as wide as pos- sible to reduce inductance (15 mils is desirable). the most critical pins in the layout of a pcnet-32 de- sign are the 4 analog power and 2 analog ground pins, avdd[1-4] and avss[1-2], respectively. all of these pins are located in one corner of the device, the ? analog corner ? . specific functions and layout requirements of the analog power and ground pins are given below. avss1 and avdd3: these pins provide the power and ground for the twisted pair and aui drivers. in addition avss1 serves as the ground for the logic interfaces in the 20 mhz crystal oscillator. hence, these pins can be very noisy. a dedicated 0.1 f capacitor between these pins is recommended. avss2 and avdd2: these pins are the most critical pins on the pcnet-32 device because they provide the power and ground for the phase-lock loop (pll) portion of the chip. the voltage-controlled oscillator (vco) por- tion of the pll is sensitive to noise in the 60 khz ? 200 khz range. to prevent noise in this frequency range from disrupting the vco, it is strongly recommended that the low-pass filter shown below be implemented on these pins. to determine the value for the resistor and capacitor, the formula is: r * c 88 where r is in ohms and c is in microfarads. some pos- sible combinations are given below. to minimize the voltage drop across the resistor, the r value should not be more than 10 ? . pcnet vdd vss c a p c a p pcnet vdd vss c a p pcnet vdd vss via to the power plane via to the ground plane correct correct incorrect v dd plane 33 f to 10 f avdd2 avss2 pcnet tm 1 ? to 10 ? vss plane
b-2 AM79C965A avss2 and avdd2/avdd4: these pins provide power and ground for the aui and twisted pair receive cir- cuitry. in addition, as mentioned earlier, avss2 and avdd2 provide power and ground for the phase-lock loop portion of the chip. except for the filter circuit al- ready mentioned, no specific decoupling is necessary on these pins. avdd1: avdd1 provides power for the control and in- terface logic in the pll. ground for this logic is pro- vided by digital ground pins. no specific decoupling is necessary on this pin. special note for adapter cards: in adapter card de- signs, it is important to utilize all available power and ground pins available on the bus edge connector. in ad- dition, the connection from the bus edge connector to the power or ground plane should be made through more than one via and with wide traces (15 mils desir- able) wherever possible. following these recommen- dations results in minimal inductance in the power and ground paths. by minimizing this inductance, ground bounce is minimized. rc 2.7 ? 33 f 4.3 ? 22 f 6.8 ? 15 f 10 ? 10 f
appendix c AM79C965A c-1 alternative method for initialization the pcnet-32 controller may be initialized by perform- ing i/o writes only. that is, data can be written directly to the appropriate control and status registers (csr) instead of reading from the initialization block in mem- ory. the registers that must be written are shown in the table below. these books are followed by writing the start bit in csr0. note: the init bit must not be set or the initialization block will be accessed instead. control and status register comment csr8 ladrf[15:0] csr9 ladrf[31:16] csr10 ladrf[47:32] csr11 ladrf[63:48] csr12 padr[15:0] csr13 padr[31:16] csr14 padr[47:32] csr15 mode csr24-25 badr csr30-31 badx csr47 pollint csr76 rcvrl csr78 xmtrl
c-2 AM79C965A
appendix d AM79C965A d-1 introduction of the look-ahead packet processing (lapp) concept a driver for the pcnet-32 controller would normally re- quire that the cpu copy receive frame data from the controller ? s buffer space to the application ? s buffer space after the entire frame has been received by the controller. for applications that use a ping-pong win- dowing style, the traffic on the network will be halted until the current frame has been completely processed by the entire application stack. this means that the time between last byte of a receive frame arriving at the client ? s ethernet controller and the client ? s transmission of the first byte of the next outgoing frame will be sepa- rated by: 1. the time that it takes the client ? s cpu ? s interrupt pro- cedure to pass software control from the current task to the driver 2. plus the time that it takes the client driver to pass the header data to the application and request an appli- cation buffer 3. plus the time that it takes the application to generate the buffer pointer and then return the buffer pointer to the driver 4. plus the time that it takes the client driver to transfer all of the frame data from the controller ? s buffer space into the application ? s buffer space and then call the application again to process the complete frame 5. plus the time that it takes the application to process the frame and generate the next outgoing frame 6. plus the time that it takes the client driver to set up the descriptor for the controller and then write a tdmd bit to csr0 the sum of these times can often be about the same as the time taken to actually transmit the frames on the wire, thereby yielding a network utilization rate of less than 50%. an important thing to note is that the pcnet-32 control- ler ? s data transfers to its buffer space are such that the system bus is needed by the pcnet-32 controller for approximately 4% of the time. this leaves 96% of the sytem bus bandwidth for the cpu to perform some of the inter-frame operations in advance of the completion of network receive activity , if possible. the question then becomes: how much of the tasks that need to be performed between reception of a frame and transmis- sion of the next frame can be performed before the re- ception of the frame actually ends at the network, and how can the cpu be instructed to perform these tasks during the network reception time? the answer depends upon exactly what is happening in the driver and application code, but the steps that can be performed at the same time as the receive data are arriving include as much as the first three steps and part of the fourth step shown in the sequence above. by performing these steps before the entire frame has arrived, the frame throughput can be substantially in- creased. a good increase in performance can be expected when the first three steps are performed before the end of the network receive operation. a much more significant performance increase could be realized if the pcnet-32 controller could place the frame data directly into the application ? s buffer space; (i.e. eliminate the need for step four.) in order to make this work, it is necessary that the application buffer pointer be determined before the frame has completely arrived, then the buffer pointer in the next desriptor for the receive frame would need to be modified in order to direct the pcnet-32 con- troller to write directly to the application buffer. more de- tails on this operation will be given later. an alternative modification to the existing system can gain a smaller, but still significant improvement in per- formance. this alternative leaves step four unchanged in that the cpu is still required to perform the copy op- eration, but it allows a large portion of the copy opera- tion to be done before the frame has been completely received by the controller, (i.e. the cpu can perform the copy operation of the receive data from the pcnet- 32 controller ? s buffer space into the application buffer space before the frame data has completely arrived from the network.) this allows the copy operation of step four to be performed concurrently with the arrival of network data, rather than sequentially, following the end of network receive activity. outline of the lapp flow: this section gives a suggested outline for a driver that utilizes the lapp feature of the pcnet-32 controller. note: the labels in the following text are used as refer- ences in the timeline diagram that follows.
d-2 AM79C965A setup: the driver should set up descriptors in groups of 3, with the own and stp bits of each set of three descriptors to read as follows: 11b, 10b, 00b. an option bit (lappen) exists in csr3, bit position 5. the software should set this bit. when set, the lap- pen bit directs the pcnet-32 controller to generate an interrupt when stp has been written to a receive descriptor by the pcnet-32 controller. flow: the pcnet-32 controller polls the current receive de- scriptor at some point in time before a message arrives. the pcnet-32 controller determines that this receive buffer is owned by the pcnet-32 controller and it stores the descriptor information to be used when a message does arrive. n0: frame preamble appears on the wire, followed by sfd and destination address. n1: the 64th byte of frame data arrives from the wire. this causes the pcnet-32 controller to begin frame data dma operations to the first buffer. c0: when the 64th byte of the message arrives, the pcnet-32 controller performs a look-ahead opera- tion to the next receive descriptor. this descriptor should be owned by the pcnet-32 controller. c1: the pcnet-32 controller intermittently requests the bus to transfer frame data to the first buffer as it ar- rives on the wire. s0: the driver remains idle. c2: when the pcnet-32 controller has completely filled the first buffer, it writes status to the first descriptor. c3: when the first descriptor for the frame has been written, changing ownership from the pcnet-32 controller to the cpu, the pcnet-32 controller will generate an srp interrupt. (this interrupt ap- pears as a rint interrupt in csr0.) s1: the srp interrupt causes the cpu to switch tasks to allow the pcnet-32 controller ? s driver to run. c4: during the cpu interrupt ? generated task switch- ing, the pcnet-32 controller is performing a look- ahead operation to the third descriptor. at this point in time, the third descriptor is owned by the cpu. [note: even though the third buffer is not owned by the pcnet-32 controller, existing amd ethernet controllers will continue to perform data dma into the buffer space that the controller already owns (i.e. buffer number 2). the controller does not know if buffer space in buffer number 2 will be sufficient or not, for this frame, but it has no way to tell except by trying to move the entire message into that space. only when the message does not fit will it signal a buffer error condition ? there is no need to panic at the point that it discovers that it does not yet own descriptor number 3.] s2: the first task of the driver ? s interrupt service routine is to collect the header information from the pcnet- 32 controller ? s first buffer and pass it to the applica- tion. s3: the application will return an application buffer pointer to the driver. the driver will add an offset to the application data buffer pointer, since the pcnet-32 controller will be placing the first portion of the message into the first and second buffers. (the modified application data buffer pointer will only be directly used by the pcnet-32 controller when it reaches the third buffer.) the driver will place the modified data buffer pointer into the final descriptor of the group (#3) and will grant owner- ship of this descriptor to the pcnet-32 controller. c5: interleaved with s2, s3 and s4 driver activity, the pcnet-32 controller will write frame data to buffer number 2. s4: the driver will next proceed to copy the contents of the pcnet-32 controller ? s first buffer to the begin- ning of the application space. this copy will be to the exact (unmodified) buffer pointer that was passed by the application. s5: after copying all of the data from the first buffer into the beginning of the application data buffer, the driver will begin to poll the ownership bit of the sec- ond descriptor. the driver is waiting for the pcnet-32 controller to finish filling the second buffer. c6: at this point, knowing that it had not previously owned the third descriptor, and knowing that the current message has not ended (there is more data in the fifo), the pcnet-32 controller will make a ? last ditch look-ahead ? to the final (third) descriptor; this time, the ownership will be true (i.e. the descrip- tor belongs to the controller), because the driver wrote the application pointer into this descriptor and then changed the ownership to give the de- scriptor to the pcnet-32 controller back at s3. note that if steps s1, s2 and s3 have not completed at this time, a buff error will result. c7: after filling the second buffer and performing the last chance look-ahead to the next descriptor, the pcnet-32 controller will write the status and change the ownership bit of descriptor number 2. s6: after the ownership of descriptor number 2 has been changed by the pcnet-32 controller, the next driver poll of the 2nd descriptor will show owner- ship granted to the cpu. the driver now copies the data from buffer number 2 into the ? middle section ?
AM79C965A d-3 of the application buffer space. this operation is in- terleaved with the c7 and c8 operations. c8: the pcnet-32 controller will perform data dma to the last buffer, whose pointer is pointing to applica- tion space. data entering the last buffer will not need the infamous ? double copy ? that is required by existing drivers, since it is being placed directly into the application buffer space. n2: the message on the wire ends. s7: when the driver completes the copy of buffer num- ber 2 data to the application buffer space, it begins polling descriptor number 3. c9: when the pcnet-32 controller has finished all data dma operations, it writes status and changes own- ership of descriptor number 3. s8: the driver sees that the ownership of descriptor number 3 has changed, and it calls the application to tell the application that a frame has arrived. s9: the application processes the received frame and generates the next tx frame, placing it into a tx buffer. s10:the driver sets up the tx descriptor for the pcnet-32 controller. figure 1. lapp timeline buffer #1 ethernet controller activity: software activity: buffer #2 buffer #3 s0: driver is idle. c1: controller is performing intermittent bursts of dma to fill data buffer #1. ethernet wire activity: n0: packet preamble, sfd and destination address are arriving. c3: srp interrupt is generated. c5: controller is performing intermittent bursts of dma to fill data buffer #2. s1: interrupt latency. s3: driver writes modified application pointer to descriptor #3. c8: controller is performing intermittent bursts of dma to fill data buffer #3. n1: 64th byte of packet data arrives. s4: driver copies data from buffer #1 to the application buffer. s5: driver polls descriptor #2. s7: driver polls descriptor of buffer #3. s8: driver calls application to tell application that packet has arrived. s6: driver copies data from buffer #2 to the application buffer. c9: controller writes descriptor #3. c0: lookahead to descriptor #2. c2: controller writes descriptor #1. s2: driver call to application to get application buffer pointer. { s9: application processes packet, generates tx packet. s10: driver sets up tx descriptor. packet data arriving c4: lookahead to descriptor #3 (own). c6: "last chance" lookahead to descriptor #3 (own). c7: controller writes descriptor #2. } }{ { n2: eom 18219-76
d-4 AM79C965A lapp software requirements software needs to set up a receive ring with descriptors formed into groups of 3. the first descriptor of each group should have own = 1 and stp = 1, the second descriptor of each group should have own = 1 and stp = 0. the third descriptor of each group should have own = 0 and stp = 0. the size of the first buffer (as indicated in the first descriptor), should be at least equal to the largest expected header size; however, for maximum efficiency of cpu utilization, the first buffer size should be larger than the header size. it should be equal to the expected number of message bytes, minus the time needed for interrupt latency and minus the ap- plication call latency, minus the time needed for the driver to write to the third descriptor, minus the time needed for the driver to copy data from buffer #1 to the application buffer space, and minus the time needed for the driver to copy data from buffer #2 to the application buffer space. note that the time needed for the copies performed by the driver depends upon the sizes of the 2nd and 3rd buffers, and that the sizes of the second and third buffers need to be set according to the time needed for the data copy operations! this means that an iterative self-adjusting mechanism needs to be placed into the software to determine the correct buffer sizing for optimal operation. fixed values for buffer sizes may be used; in such a case, the lapp method will still provide a significant performance increase, but the performance increase will not be maximized. the following diagram illustrates this setup for a receive ring size of 9: lapp rules for parsing of descriptors when using the lapp method, software must use a modified form of descriptor parsing as follows: software will examine own and stp to determine where a rcv frame begins. rcv frames will only begin in buffers that have own = 0 and stp = 1. software shall assume that a frame continues until it finds either enp = 1 or err= 1. software must discard all descriptors with own = 0 and stp = 0 and move to the next descriptor when searching for the beginning of a new frame; enp and err should be ignored by software during this search. software cannot change an stp value in the receive descriptor ring after the initial setup of the ring is com- plete, even if software has ownership of the stp de- scriptor unless the previous stp descriptor in the ring is also owned by the software. when lappen = 1, then hardware will use a modified form of descriptor parsing as follows: the controller will examine own and stp to determine where to begin placing a rcv frame. a new rcv frame will only begin in a buffer that has own = 1 and stp = 1. the controller will always obey the own bit for deter- mining whether or not it may use the next buffer for a chain. the controller will always mark the end of a frame with either enp = 1 or err = 1. figure 2. lapp 3 buffering grouping own = 1 stp = 1 size = a-(s1+s2+s3+s4+s6) descriptor #1 own = 1 stp = 0 size = s1+s2+s3+s4 descriptor #2 own = 0 stp = 0 size = s6 descriptor #3 own = 1 stp = 1 descriptor #4 own = 1 descriptor #5 descriptor #6 own = 1 stp = 1 descriptor #7 own = 1 descriptor #8 descriptor #9 own = 0 stp = 0 own = 0 stp = 0 stp = 0 stp = 0 a = expected message size in bytes s1 = interrupt latency s2 = application call latency s3 =time needed for driver to write to third descriptor s4 = time needed for driver to copy data from buffer #1 to application buffer space s6 = time needed for driver to copy data from buffer #2 to application buffer space note that the times needed for tasks s1, s2, s3, s4, and s6 should be divided by 0.8 microseconds to yield an equivalent number of network byte times before subtracting these quantities from the expected message size a. size = a-(s1+s2+s3+s4+s6) size = s1+s2+s3+s4 size = s6 size = a-(s1+s2+s3+s4+s6) size = s1+s2+s3+s4 size = s6 18219-77
AM79C965A d-5 the controller will discard all descriptors with own = 1 and stp = 0 and move to the next descriptor when searching for a place to begin a new frame . it dis- cards these desciptors by simply changing the owner- ship bit from own=1 to own = 0. such a descriptor is unused for receive purposes by the controller, and the driver must recognize this. (the driver will recognize this if it follows the software rules.) the controller will ignore all descriptors with own = 0 and stp = 0 and move to the next descriptor when searching for a place to begin a new frame . in other words, the controller is allowed to skip entries in the ring that it does not own, but only when it is looking for a place to begin a new frame. some examples of lapp descriptor interaction choose an expected frame size of 1060 bytes. choose buffer sizes of 800, 200 and 200 bytes. 1. assume that a 1060 byte frame arrives correctly, and that the timing of the early interrupt and the software is smooth. the descriptors will have changed from: * enp or err 2. assume that instead of the expected 1060 byte frame, a 900 byte frame arrives, either because there was an error in the network, or because this is the last frame in a file transmission sequence. *enp or err ** note that the pcnet-32 controller might write a zero to enp location in the 3rd descriptor. here are the two possibilities: 1) if the controller finishes the data transfers into buffer number 2 after the driver writes the application ? s modified buffer pointer into the third descriptor, then the controller will write a zero to enp for this buffer and will write a zero to own and stp. 2) if the controller finishes the data transfers into buffer number 2 before the driver writes the application ? s modified buffer pointer into the third descriptor, then the controller will complete the frame in buffer number two and then skip the then un- owned third buffer. in this case, the pcnet-32 controller will not have had the opportunity to reset the enp bit in this de- scriptor, and it is possible that the software left this bit as enp=1 from the last time through the ring. therefore, the softw are descriptor number before the frame arrived after the frame has arrived comments (after frame arrival) own stp enp* own stp enp* 111x010bytes 1 ? 800 2 1 0 x 0 0 0 bytes 801 ? 1000 3 0 0 x 0 0 1 bytes 1001 ? 1060 4 1 1 x 1 1 x controller ? s current location 5 1 0 x 1 0 x not yet used 6 0 0 x 0 0 x not yet used etc. 1 1 x 1 1 x not yet used descriptor number before the frame arrived after the frame has arrived comments (after frame arrival) own stp enp* own stp enp* 111x010bytes 1 ? 800 2 1 0 x 0 0 1 bytes 801 ? 900 3 0 0 x 0 0 ?** discarded buffer 4 1 1 x 1 1 x controller ? s current location 5 1 0 x 1 0 x not yet used 6 0 0 x 0 0 x not yet used etc. 1 1 x 1 1 x not yet used
d-6 AM79C965A must treat the location as a don ? t care; the rule is, after finding enp=1 (or err=1) in descriptor number 2, the software must ignore enp bits until it finds the next stp=1. 3. assume that instead of the expected 1060 byte frame, a 100 byte frame arrives, because there was an error in the network, or because this is the last frame in a file transmission sequence, or perhaps because it is an acknowledge frame. * enp or err ** same as note in case 2 above, except that in this case, it is very unlikely that the driver can respond to the in- terrupt and get the pointer from the application before the pcnet-32 controller has completed its poll of the next descriptors. this means that for almost all occurrences of this case, the pcnet-32 controller will not find the own bit set for this descriptor and therefore, the enp bit will almost always contain the old value, since the pcnet-32 controller will not have had an opportunity to modify it. *** note that even though the pcnet-32 controller will write a zero to this enp location, the software should treat the location as a don ? t care, since after finding the enp=1 in descriptor number 2, the software should ignore enp bits until it finds the next stp=1. buffer size tuning for maximum performance, buffer sizes should be ad- justed depending upon the expected frame size and the values of the interrupt latency and application call latency. the best driver code will minimize the cpu uti- lization while also minimizing the latency from frame end on the network to frame sent to application from driver (frame latency). these objectives are aimed at increasing throughput on the network while decreasing cpu utilization. note that the buffer sizes in the ring may be altered at any time that the cpu has ownership of the corre- sponding descriptor. the best choice for buffer sizes will maximize the time that the driver is swapped out, while minimizing the time from the last byte written by the pcnet-32 controller to the time that the data is passed from the driver to the application. in the dia- gram, this corresponds to maximizing s0, while mini- mizing the time between c9 and s8. (the timeline happens to show a minimal time from c9 to s8.) note that by increasing the size of buffer number 1, we increase the value of s0. however, when we increase the size of buffer number 1, we also increase the value of s4. if the size of buffer number 1 is too large, then the driver will not have enough time to perform tasks s2, s3, s4, s5 and s6. the result is that there will be delay from the execution of task c9 until the execution of task s8. a perfectly timed system will have the val- ues for s5 and s7 at a minimum. an average increase in performance can be achieved if the general guidelines of buffer sizes in figure 2 is fol- lowed. however, as was noted earlier, the correct sizing for buffers will depend upon the expected message size. there are two problems with relating expected message size with the correct buffer sizing: 1. message sizes cannot always be accurately pre- dicted, since a single application may expect differ- ent message sizes at different times, therefore, the buffer sizes chosen will not always maximize throughput. 2. within a single application, message sizes might be somewhat predictable, but when the same driver is to be shared with multiple applications, there may not be a common predictable message size. additional problems occur when trying to define the correct sizing because the correct size also depends descriptor number before the frame arrived after the frame has arrived comments (after frame arrival) own stp enp* own stp enp* 111x011bytes 1 ? 100 2 1 0 x 0 0 0*** discarded buffer 3 0 0 x 0 0 ?** discarded buffer 4 1 1 x 1 1 x controller ? s current location 5 1 0 x 1 0 x not yet used 6 0 0 x 0 0 x not yet used etc. 1 1 x 1 1 x not yet used
AM79C965A d-7 upon the interrupt latency, which may vary from system to system, depending upon both the hardware and the software installed in each system. in order to deal with the unpredictable nature of the message size, the driver can implement a self-tuning mechanism that examines the amount of time spent in tasks s5 and s7 as such: while the driver is polling for each descriptor, it could count the number of poll operations performed and then adjust the number 1 buffer size to a larger value, by adding ? t ? bytes to the buffer count, if the num- ber of poll operations was greater than ? x ? . if fewer than ? x ? poll operations were needed for each of s5 and s7, then the software should adjust the buffer size to a smaller value by, subtracting ? y ? bytes from the buffer count. experiments with such a tuning mechanism must be performed to determine the best values for ? x ? and ? y. ? note whenever the size of buffer number 1 is adjusted, buffer sizes for buffer number 2 and buffer 3 should also be adjusted. in some systems the typical mix of receive frames on a network for a client application consists mostly of large data frames, with very few small frames. in this case, for maximum efficiency of buffer sizing, when a frame arrives under a certain size limit, the driver should not adjust the buffer sizes in response to the short frame. an alternative lapp flow ? the two interrupt method an alternative to the above suggested flow is to use two interrupts, one at the start of the receive frame and the other at the end of the receive frame, instead of just looking for the srp interrupt as was described above. this alternative attempts to reduce the amount of time that the software ? wastes ? while polling for descriptor own bits. this time would then be available for other cpu tasks. it also minimizes the amount of time the cpu needs for data copying. this savings can be ap- plied to other cpu tasks. the time from the end of frame arrival on the wire to de- livery of the frame to the application is labeled as frame latency. for the one-interrupt method, frame latency is minimized, while cpu utilization increases. for the two-interrupt method, frame latency becomes greater, while cpu utilization decreases. note that some of the cpu time that can be applied to non-ethernet tasks is used for task switching in the cpu. one task switch is required to swap a non-ether- net task into the cpu (after s7a) and a second task switch is needed to swap the ethernet driver back in again (at s8a). if the time needed to perform these task switches exceeds the time saved by not polling descrip- tors, then there is a net loss in performance with this method. therefore, the sprint method implemented should be carefully chosen. figure 3 shows the event flow for the two-interrupt method. figure 4 shows the buffer sizing for the two-interrupt method. note that the second buffer size will be about the same for each method. there is another alternative which is a marriage of the two previous methods. this third possibility would use the buffer sizes set by the two-interrupt method, but would use the polling method of determining frame end. this will give good frame latency but at the price of very high cpu utilization. and still, there are even more compromise positions that use various fixed buffer sizes and effectively, the flow of the one-interrupt method. all of these compro- mises will reduce the complexity of the one-interrupt method by removing the heuristic buffer sizing code, but they all become less efficient than heuristic code would allow.
d-8 AM79C965A figure 3. lapp timeline for two-interrupt method buffer #1 ethernet controller activity: software activity: buffer #2 buffer #3 s0: driver is idle. c1: controller is performing intermittent bursts of dma to fill data buffer #1. ethernet wire activity: n0: packet preamble, sfd and destination address are arriving. c3: srp interrupt is generated. c5: controller is performing intermittent bursts of dma to fill data buffer #2. s1: interrupt latency. s3: driver writes modified application pointer to descriptor #3. c8: controller is performing intermittent bursts of dma to fill data buffer #3. n1: 64th byte of packet data arrives. s4: driver copies data from buffer #1 to the application buffer. s5: driver polls descriptor #2. s7: driver is swapped out, allowing a non-etherenet application to run. s8: driver calls application to tell application that packet has arrived. s6: driver copies data from buffer #2 to the application buffer. c9: controller writes descriptor #3. c0: lookahead to descriptor #2. c2: controller writes descriptor #1. s2: driver call to application to get application buffer pointer. { s9: application processes packet, generates tx packet. s10: driver sets up tx descriptor. packet data arriving c4: lookahead to descriptor #3 (own). c6: "last chance" lookahead to descriptor #3 (own). c7: controller writes descriptor #2. } }{ { n2: eom c10: erp interrupt is generated. } s8a: interrupt latency. s7a: driver interrupt service routine executes return. { 18218-78
AM79C965A d-9 figure 4. lapp 3 buffer grouping for tw0-interrupt method own = 1 stp = 1 size = header_size (minimum 64 bytes) descriptor #1 own = 1 stp = 0 size = s1+s2+s3+s4 descriptor #2 own = 0 stp = 0 size = 1518 - (s1+s2+s3+s4+header_size) descriptor #3 own = 1 stp = 1 descriptor #4 own = 1 descriptor #5 descriptor #6 own = 1 stp = 1 descriptor #7 own = 1 descriptor #8 descriptor #9 own = 0 stp = 0 own = 0 stp = 0 stp = 0 stp = 0 a = expected message size in bytes s1 = interrupt latency s2 = application call latency s3 =time needed for driver to write to third descriptor s4 = time needed for driver to copy data from buffer #1 to application buffer space s6 = time needed for driver to copy data from buffer #2 to application buffer space note that the times needed for tasks s1, s2, s3, s4, and s6 should be divided by 0.8 microseconds to yield an equivalent number of network byte times before subtracting these quantities from the expected message size a. size = s1+s2+s3+s4 size = s1+s2+s3+s4 size = 1518 - (s1+s2+s3+s4+header_size) size = 1518 - (s1+s2+s3+s4+header_size) size = header_size (minimum 64 bytes) size = header_size (minimum 64 bytes) 18219-79
d-10 AM79C965A
appendix e AM79C965A e-1 AM79C965A pcnet-32 silicon errata report am 79c965a rev b1 silicon status the items below are the known errata for rev b1 silicon. rev b1 silicon is the production silicon. note: a signal followed by "*" indicates active low; i.e., master*. the "description" section of this document gives an external description of the problem. the "implication" section gives an explanation of how to pcnet-isa ii controller behaves and its impact on the system. the "work-around" section describes a work-around for the problem. the "status" section describes when and how the problem will be corrected. current package marking for this revision: line 1: line 2: AM79C965Akc (assuming package is pqfp) line 3: b1 line 4: (c) 1993 amd value of chip id registers csr89+csr88 [31:0] for this revision = 32430003h. (when read in 16-bit mode.) 1. incorrect interpretation of descriptor ring length in 32-bit software mode description: in 32-bit software mode, if tlen and rlen is set to 8 hex, indicating a descriptor ring length of 256 in the init block, the pcnet-32 controller will internally interpret ring length to be 512. also, if tlen or rlen is set to c hex, the pcnet-32 controller converts it to 256 instead of 512. the table below summarizes the corresponding tlen/rlen settings and their actual interpretations. tlen or rlen value correct ring length erratum ring length 011 122 244 388 41616 53232 66464 7 128 128 8 256 512 *bad 9 512 512 a 512 512 b 512 512 c 512 256 *bad d 512 512 e 512 512 f 512 512
e-2 AM79C965A implication: there is no jeopardy to customers using amd drivers, because amd os drivers do not use ring lengths that long. for customers developing proprietary drivers, implementation of the following work-around is highly recommended. work-around: 1. program tlen or rlen to c hex if ring length of 256 is desired, or 2. ? initialize init block with any value for tlen or rlen ? set init, don ? t set strt ? after idon, set stop ? write to csr76 (rcvrl) and csr78 (xmtrl) with correct value ? set strt status: no current plan to revise silicon to fix this erratum. 2. receive frame align feature not functioning correctly description: the receive frame align feature does not function correctly. the data field of a received frame will not necessarily be forced to align to a double-word aligned address boundary when the rcvalgn bit (bit 0) in csr122 is set. two extra bytes will not always be inserted at the beginning of the receive packet destination address field. implication: users are not able to force the data field of 802.3 frames to align to 0 mod 4 address boundaries, i.e. double-word aligned addresses, by setting this bit. work-around: none. do not activate this bit. this feature of the device does not function as described in the data sheet. status: no current plan to revise silicon to fix this erratum. 3. false babl errors generated description: the pcnet-32 device will intermittently give babl error indications when the network traffic has frames equal to or greater than 1518 bytes. implication: false babl errors on the receiving station can be passed up to the upper layer software if the pcnet-32 device is just coming out of a deferral and the multi-purpose counter used to count the number of bytes received reaches 1518 at the same time. if the network is heavily loaded with full-size frames, the probability of a false babl error is high. work-around: there are two possible work-arounds. 1. if the user has no intention to transmit frames larger than 1518 bytes, the babl bit may be masked to ignore babble errors. in this case, the false babble error will not cause an interrupt, nor will it be passed to the higher- level software. 2. check to see if the device is transmitting in isr (interrupt service routine), which is induced by the babl error. the bcrs that control the led settings can be programmed to indicate a transmit activity, assuming the interrupt latency is not longer than one minute ifg (inter-frame gap) time.
AM79C965A e-3 if (isr_latency < 9.6 us) true_bable_err = babl* (tint+xmt_led) { i.e.false_bable_err = ~ (babl* (tint+xmt_let))} else cannot tell if the babl error is true or false just by reading babl, tint, xmt_led bits in isr. status: no current plan to fix this item. enhancement the enhancement section gives an external description of the enhancement. the implication section gives an ex- planation of how the pcnet-32 isa behaves and its impact on the system. the status section indicates when the enhancement will be implemented. 1. improved phase lock loop function enhancement: the pll (phase lock loop) circuit in revision b1 silicon is enhanced to provide better phase tracking. implication: with this pll enhancement, the number of potentially dropped packets is effectively zero. status: implemented in revision b1 silicon.
AM79C965A the contents of this document are provided in connection with advanced micro devices, inc. ( ? amd ? ) products. amd makes no representations or warranties with respect to the accuracy or completeness of the contents of this publication and reserves the right to make changes to specifications and product descriptions at any time without notice. no license, whether express, impli ed, arising by estoppel or otherwise, to any intellectual property rights is granted by this publication. except as set forth in am d ? s standard terms and conditions of sale, amd assumes no liability whatsoever, and disclaims any express or implied warranty, relating to its products including, but not limited to, the implied warranty of merchantability, fitness for a particular purpo se, or infringement of any intellectual property right. amd ? s products are not designed, intended, authorized or warranted for use as components in systems intended for surgical im- plant into the body, or in other applications intended to support or sustain life, or in any other application in which the fai lure of amd ? s product could create a situation where personal injury, death, or severe property or environmental damage may occur. amd reserves the right to discontinue or make changes to its products at any time without notice. trademarks copyright ? 1998, 2000 advanced micro devices, inc. all rights reserved. amd, the amd logo, and combinations thereof are trademarks of advanced micro devices, inc. am186, am386, am486, am29000, bimr, eimr, eimr+, gigaphy, himib, ilacc, imr, imr+, imr2, isa-hub, mace, magic packet, pcnet, pc net- fast, pcnet- fast+, pcnet-mobile, qfex, qfexr, quasi, quest, quiet, taxichip, tpex, and tpex plus are trademarks of advanced micro devices, inc. microsoft is a registered trademark of microsoft corporation. other product names used in this publication are for identification purposes only and may be trademarks of their respective com panies.


▲Up To Search▲   

 
Price & Availability of AM79C965A

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X